docker 之 docker swarm

发布时间 2023-04-24 16:51:56作者: 名字长的像一只老山羊

以下是常用的 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。