0%

docker swarm替代docker-compose

使用 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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
管理命令:
container 管理容器
image 管理镜像
network 管理网络
node 管理Swarm节点
plugin 管理插件
secret 管理Docker secrets
service 管理服务
stack 管理Docker stacks
swarm 管理Swarm集群
system 查看系统信息
volume 管理卷 如:docker container ls 显示所有容器 普通命令: attach 进入一个运行的容器
build 从一个DockerFile构建镜像
commit 从容器创建一个镜像
cp 从容器和主机文件系统之间拷贝文件 create 创建一个容器
diff 检查容器文件系统上的更改
events 从服务器获取实时事件
exec 在正在运行的容器中运行命令
export 将容器的文件系统导出为tar存档
history 显示镜像的历史记录
images 查看镜像列表
import 从归档文件中创建镜像
info 显示系统范围的信息
inspect 返回Docker对象的低级信息
kill kill运行中的容器
load 从存档或者STDIN加载镜像
login 登陆docker镜像仓库
logout 退出docker镜像仓库
logs 获取一个容器的日志
pause 暂停一个或多个容器中的所有进程
port 查看端口映射或容器的特定映射列表
ps 查看容器列表
pull 从镜像仓库拉取镜像
push 将本地的镜像上传到镜像仓库,要先登陆到镜像仓库
rename 重命名容器
restart 重启容器
rm 删除容器
rmi 删除镜像
run 创建一个新的容器并运行一个命令
save 将指定镜像保存成 tar 归档文件
search 从Docker Hub搜索镜像
start 启动容器
stats 实时显示容器资源使用情况的统计信息
stop 停止容器
tag 标记本地镜像,将其归入某一仓库
top 展示一个容器中运行的进程
unpause 恢复容器中所有的进程
update 更新容器配置
version 显示Docker的版本信息
wait 阻塞直到容器停止,然后打印退出代码 如:docker images 显示所有镜像

参考资料

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