docker 之 docker swarm
以下是常用的 Docker Swarm 命令:
初始化 Swarm
docker swarm init
此命令将初始化一个新的 Swarm,当前节点将成为 Swarm 的 Manager 节点。
加入 Swarm
docker swarm join --token <TOKEN> <MANAGER_IP>:2377
此命令将节点加入到已存在的 Swarm 中。需要在运行 docker swarm init 的 Manager 节点上获取 <TOKEN> 。
例如:
docker swarm join --token SWMTKN-1-0fk76r0ghk0sefx3jot2f9nahm4imxh93tb07dol4boql8m57j-1b78c2x618m2sq7wddxc0tv5c 192.168.136.5:2377
如果没有token,可以查看
docker swarm join-token manager
docker swarm join-token worker
创建 Service
docker service create [OPTIONS] IMAGE [COMMAND] [ARG...]
此命令用于创建一个 Service。Service 是在 Swarm 集群中运行的容器组合。IMAGE 参数指定要运行的镜像名称或 ID,[COMMAND] [ARG...] 参数指定要在容器中运行的命令和参数。
例子:
docker service create --limit-cpu 2 --limit-memory 4G --name g7-saas-truck --network=host --with-registry-auth --mount type=bind,src=/data/config/g7-saas-truck/config,dst=/opt/g7-saas-truck/config --mount type=bind,src=/data/config/g7-saas-truck/log4j,dst=/opt/g7-saas-truck/log4j --mount type=bind,src=/applog,dst=/applog --env JAVA_OPTS=-Xmx4000M registry.cn-shanghai.aliyuncs.com/weruntech/g7-saas-truck:20230419
详细解析
docker service create: 用于在 swarm 集群中创建一个新的服务。
--limit-cpu 2: 设置该服务的 CPU 使用限制为 2 个单位。这将确保该服务不会使用超过指定数量的 CPU 核心。
--limit-memory 4G: 设置该服务的内存使用限制为 4GB。这将确保该服务不会使用超过指定数量的内存。
--name g7-saas-truck: 指定该服务的名称为 "g7-saas-truck"。
--network=host: 将该服务连接到主机网络,使其可以直接访问主机上的网络资源。
--with-registry-auth: 使用 Docker 登录凭证来从镜像仓库中拉取镜像。
--mount type=bind,src=/data/config/g7-saas-truck/config,dst=/opt/g7-saas-truck/config: 在容器中挂载一个本地目录作为卷,将 /data/config/g7-saas-truck/config 目录绑定到容器内部的 /opt/g7-saas-truck/config 目录中。
--mount type=bind,src=/data/config/g7-saas-truck/log4j,dst=/opt/g7-saas-truck/log4j: 在容器中再次挂载一个本地目录作为卷,将 /data/config/g7-saas-truck/log4j 目录绑定到容器内部的 /opt/g7-saas-truck/log4j 目录中。
--mount type=bind,src=/applog,dst=/applog: 在容器中再次挂载一个本地目录作为卷,将 /applog 目录绑定到容器内部的 /applog 目录中。
--env JAVA_OPTS=-Xmx4000M: 设置容器中的 JAVA_OPTS 环境变量为 -Xmx4000M,这将指定 JVM 的最大堆大小为 4GB。
registry.cn-shanghai.aliyuncs.com/weruntech/g7-saas-truck:20230419: 指定要拉取的 Docker 镜像的名称和版本号。该镜像存储在阿里云容器镜像服务 (ACR) 中,名称为 weruntech/g7-saas-truck,版本为 20230419。
列出 Services
docker service ls
此命令用于列出所有正在运行的 Service。
更新 Service
docker service update [OPTIONS] SERVICE
此命令用于更新一个现有的 Service。SERVICE 参数为要更新的 Service 名称。
删除 Service
docker service rm SERVICE
此命令用于删除一个现有的 Service。SERVICE 参数为要删除的 Service 名称。
扩展 Service
docker service scale SERVICE=REPLICAS
此命令用于扩展一个 Service 的副本数。SERVICE 参数为要扩展的 Service 名称,REPLICAS 参数为要扩展到的副本数。
列出节点
docker node ls
此命令用于列出 Swarm 集群中的所有节点。
提升节点为 Manager
docker node promote NODE_ID
此命令用于将指定的节点提升为 Swarm Manager 节点。NODE_ID 参数为要提升的节点 ID。
降级节点为 Worker
docker node demote NODE_ID
此命令用于将指定的节点降级为 Swarm Worker 节点。NODE_ID 参数为要降级的节点 ID。
删除节点
docker node rm NODE_ID
此命令用于从 Swarm 集群中删除指定的节点。NODE_ID 参数为要删除的节点 ID。