使用 docker-compose 管理本地容器组,是非常方便的手段,但是最近遇到一个 bug,决定使用 docker stack /swarm 替代 docker-compose 。
命令行生成二维码可以试试
echo "二维码内容" | qrencode -o - -t UTF8
事情是这样的,在 docker-compose.yaml
内定义了 network
.aliases
之后,在测试的时候,其他容器能够正常通过 aliases
对其进行访问,但是,到了实际部署的时候,很容易失败,例如重启之后,或者某个容器意外或者手动重启之后,都有可能导致该情况,导致很湿郁闷。
遂,在查找资料之后,决定替换掉 docker-compose
。
Ps:
docker-compose
的配置depends_on
只会控制控制启动顺序,并不会等待所需容器启动成功之后再启动下一 容器
简单来说,启动容器数据库
之后会马上启动容器应用
,并不在乎应用
容器需要数据库
容器才能正常运行,此时可能会造成应用
容器无法找到数据库而意外退出。
docker stack/swarm 简单使用说明:
- 配置swarm
1
docker swarm init
初始化
swarm
,只需要初始化一次即可,如果设备有多个IP
,则需要指定对外IP
。 - 开始部署服务组
1
docker stack deploy -c docker-compose.yml stack-demo
需要注意的是,如果
docker-compose.yml
配置了自定义IP
(例如:172.18.0.1
),请不要与现有的网络冲突。
没有意外的话,服务就建好了。
常用 docker stack/swarm
命令
- 查看当前网络
docker network ls
- 查看服务状态
docker service ls
- 查看节点
docker node ls
- 查看具体服务状态
ps
docker service ps 服务名
- 更新服务
docker service update 服务名
- 强制更新(重启)
docker service update –force 服务名
- 查看所有容器占用(推介)
docker stats`
- 批量删除
none
标签镜像 根据自己情况进行处理docker rmi $(docker images | awk ‘/
/ { print $3 }’) - 清理关闭的容器以及未在使用的容器
慎用
dangling image:docker system prune –all –force –volumes
1 | 管理命令: |
参考资料
docker swarm 搭建与服务更新(推介) https://www.cnblogs.com/ejiyuan/p/10580331.html
force docker deploy to pull new images https://github.com/moby/moby/issues/30951
Docker Swarm - 节点管理 https://www.jianshu.com/p/48dd5fff7150
docker stack /swarm 替代 docker-compose 进行部署 https://www.cnblogs.com/xuanmanstein/p/11605071.html
Docker Compose https://www.runoob.com/docker/docker-compose.html
清理docker的image https://www.cnblogs.com/qiandeheng/p/12121263.html
docker的stack和service https://blog.csdn.net/qq_16912257/article/details/83351479
docker 常用命令,docker启动,重启,关闭命令 https://www.huaweicloud.com/articles/91bbd9ea35c117e1d83bb6487bbcc755.html