标签:容器 version cas 导入 服务 约束 redis数据库 节点 mic
分布式应用程序层次结构的顶部:堆栈。
堆栈是一组相互关联的服务,它们共享依赖关系,并且可以协调和缩放在一起。
单个堆栈能够定义和协调整个应用程序的功能(尽管非常复杂的应用程序可能希望使用多个堆栈)。
让我们看看我们的swarm如何调度容器。
docker-compose1.yml
在编辑器中打开并使用以下内容替换其内容
version: "3"
services:
web:
# replace username/repo:tag with your name and image details
image: wangshu19930818/friendlyhello:v1
deploy:
replicas: 5
restart_policy:
condition: on-failure
resources:
limits:
cpus: "0.1"
memory: 50M
ports:
- "80:80"
networks:
- webnet
visualizer:
image: dockersamples/visualizer:stable
ports:
- "8080:8080"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
deploy:
placement:
constraints: [node.role == manager]
networks:
- webnet
networks:
webnet:
这里唯一新的是对等服务web
,名为visualizer
。
注意这里有两个新的东西:一个volumes
键,让可视化工具访问Docker的主机套接字文件,以及一个placement
密钥,
确保这个服务只能在一个swarm管理器上运行 - 绝不是一个工作者。
2. 确保您的shell配置为与之通信myvm1
运行
docker-machine ls
以列出计算机并确保已连接到myvm1
3. docker stack deploy
在管理器上重新运行该命令,并更新需要更新的任何服务:
docker stack deploy -c docker-compose1.yml getstartedlab
4. 看一下可视化工具。
在Compose文件中看到了visualizer
在端口8080上运行docker-machine ls
。
通过运行获取其中一个节点的IP地址。转到端口8080的IP地址
可视化工具是一个独立的服务,可以在任何包含它的应用程序中运行。
它不依赖于任何其他东西。
再次通过相同的工作流程来添加Redis数据库来存储应用数据。
保存这个新docker-compose.yml
文件,最后添加一个Redis服务。请务必更换username/repo:tag
图像详细信息。
version: "3"
services:
web:
# replace username/repo:tag with your name and image details
image: wangshu19930818/friendlyhello:v1
deploy:
replicas: 5
restart_policy:
condition: on-failure
resources:
limits:
cpus: "0.1"
memory: 50M
ports:
- "80:80"
networks:
- webnet
visualizer:
image: dockersamples/visualizer:stable
ports:
- "8080:8080"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
deploy:
placement:
constraints: [node.role == manager]
networks:
- webnet
redis:
image: redis
ports:
- "6379:6379"
volumes:
- "/home/docker/data:/data"
deploy:
placement:
constraints: [node.role == manager]
command: redis-server --appendonly yes
networks:
- webnet
networks:
webnet:
Redis端口6379已由Redis预先配置为从容器暴露给主机,在我们的Compose文件中,我们将它从主机暴露给全世界,因此实际上可以输入任何IP的IP如果您愿意,可以将节点导入Redis Desktop Manager并管理此Redis实例。
最重要的是redis
规范中有一些事项会使数据在此堆栈的部署之间保持不变:
redis
总是在管理器上运行,所以它总是使用相同的文件系统。redis
访问主机文件系统中的任意目录作为/data
容器内部,这是Redis存储数据的位置。总之,这是在主机的物理文件系统中为Redis数据创建“真实来源”。如果没有这个,Redis会将其数据存储 /data
在容器的文件系统中,如果重新部署该容器,将会被删除。
这个真相来源有两个组成部分:
./data
(在主机上)/data
(在Redis容器内)。./data
指定主机上的文件仍然存在,从而实现连续性。已准备好部署新的Redis-using堆栈。
./data
在管理器上创建一个目录:
docker-machine ssh myvm1 "mkdir ./data"
确保您的shell配置为与之通信myvm1
运行docker-machine ls
以列出计算机并确保已连接到myvm1
再跑docker stack deploy
一次。
$ docker stack deploy -c docker-compose.yml getstartedlab
运行docker service ls
以验证三个服务是否按预期运行。
http://192.168.99.101
,并查看访问者计数器的结果,该计数器现已存在并在Redis上存储信息。redis
与一起运行服务web
和visualizer
服务。
标签:容器 version cas 导入 服务 约束 redis数据库 节点 mic
原文地址:https://www.cnblogs.com/wwchihiro/p/9295610.html