文章目录
yml文件部署swarm集群
部署
- 首先,在server1上删除之前输入命令手动方式创建的服务和容器。
server1是swarm集群的管理节点,在server1上面删除,server2、server3和server4的容器自动也就释放了
[root@server1 ~]# docker service rm viz
viz
[root@server1 ~]# docker service rm web
web
[root@server1 ~]# docker service ls
[root@server1 ~]# docker ps
- 在server2~4上查看运行web服务的容器是否被释放。
[root@server2 ~]# docker ps
[root@server3 ~]# docker ps
[root@server4 ~]# docker ps
- server1下载yml文件。
lftp 172.25.11.250:/pub/docker/docker> get docker-compose.yml
[root@server1 ~]# ls
docker-compose.yml game2048.tar nginx.tar visualizer.tar
- 新建一个目录,将yml文件移入。
[root@server1 ~]# mkdir test
[root@server1 ~]# mv docker-compose.yml test/
[root@server1 ~]# cd test/
[root@server1 test]# ls
docker-compose.yml
- 编辑yml文件,加入容器的数据卷,副本三个,1次更新两个,10s更新一次
[root@server1 test]# vim docker-compose.yml
version: "3.7"
services:
web:
image: nginx:latest #注意镜像名
ports:
- "80:80"
networks:
- webnet
volumes:
- "webdata:/usr/share/nginx/html"
deploy:
replicas: 3
update_config:
parallelism: 2
delay: 10s
restart_policy:
condition: on-failure
visualizer:
image: dockersamples/visualizer:latest #注意镜像名
ports:
- "8080:8080"
stop_grace_period: 1m30s
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
deploy:
placement:
constraints: [node.role == manager]
networks:
webnet:
volumes:
webdata:
- 利用yml文件开始创建swarm集群
[root@server1 test]# docker stack deploy --help #查看帮助
[root@server1 test]# docker stack deploy -c docker-compose.yml example
- 可以看到开启了三个web服务,在server1、server3、server4上各运行了一个容器,也可以看到数据卷
[root@server1 test]# docker service ps example_web
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
6pgbi5opw0dt example_web.1 nginx:latest server3 Running Running 27 seconds ago
jeenrwvkhumg example_web.2 nginx:latest server4 Running Running 27 seconds ago
m5lyqfk0cdxd example_web.3 nginx:latest server2 Running Running 17 seconds ago
[root@server1 test]# docker inspect 6pgbi5opw0dt
- 在浏览器里面查看,成功
所以文件方式比之前的命令方便多了,而且如果需要改变的化只需要修改文件,重新运行即可,不再需要从头开始部署。
修改nginx服务的默认发布页面
- 查看默认的发布页面。
[root@server2 test]# cd /var/lib/docker/volumes/example_webdata/_data/
[root@server2 _data]# ls
50x.html index.html
[root@server2 _data]# cat index.html
- 修改server2上面容器里运行的nginx服务的web页面。
[root@server2 _data]# vim index.html
[root@server2 _data]# cat index.html
hello even!
- 此时server3和server4的页面不会随着server2的改变而改变。
修改yml文件,写入副本个数为6
- 修改yml文件
[root@server1 test]# vim docker-compose.yml
- 更新一下,可以看到6个web都开启。
[root@server1 test]# docker stack deploy -c docker-compose.yml example
[root@server1 test]# docker service ps example_web
- 在4个节点上分别查看。
[root@server1 test]# docker stack services example
server1上有一个监控的容器,一个web容器。
server2上一个web容器。
server3和server4上分别有两个web容器。
- 在浏览器中查看。
修改yml文件,写入对容器使用资源的限制
- 编辑文件
[root@server1 test]# vim docker-compose.yml
- 更新一下。
[root@server1 test]# docker stack deploy -c docker-compose.yml example
- 查看资源的限制是否生效。
- 可以看出已经生效。