欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 美食 > Docker Swarm集群配置与使用

Docker Swarm集群配置与使用

2025/2/3 8:12:08 来源:https://blog.csdn.net/qq_42881421/article/details/143397255  浏览:    关键词:Docker Swarm集群配置与使用

机器准备

  1. 安装好Linux,关闭防火墙,关闭 selinux,可以只配置1个NAT网卡,可参考:Vmware下安装Rocky Linux9.4

  2. 安装好Docker,可参考:Rocky Linux9下安装Docker和卸载Docker

  3. 使用第一台Linux机器完整克隆得到三台机器。

修改ip地址

分别修改三台机器的ip地址

查看网卡配置文件
[root@localhost ~]# ls /etc/NetworkManager/system-connections/
ens33.nmconnection
​
修改网卡,如果有多张网卡,修改NAT类型的那张网卡
[root@localhost ~]# vi /etc/NetworkManager/system-connections/ens33.nmconnection 

修改ip地址,每台机器的ip要不一样

第一台机器

[ipv4]
address1=192.168.193.151/24,192.168.193.2
dns=114.114.114.114;8.8.8.8;
method=manual

第二台机器

[ipv4]
address1=192.168.193.152/24,192.168.193.2
dns=114.114.114.114;8.8.8.8;
method=manual

第三台机器

[ipv4]
address1=192.168.193.153/24,192.168.193.2
dns=114.114.114.114;8.8.8.8;
method=manual

修改主机名称

第一台机器

[root@localhost ~]# hostnamectl set-hostname swarm-manager01

第二台机器

[root@localhost ~]# hostnamectl set-hostname swarm-worker01

第三台机器

[root@localhost ~]# hostnamectl set-hostname swarm-worker02

修改/etc/hosts映射ip和主机名

三台机器均执行

[root@localhost ~]# vi /etc/hosts

三台机器均添加如下内容

192.168.193.151 swarm-manager01 m1
192.168.193.152 swarm-worker01 w1
192.168.193.153 swarm-worker02 w2

三台机器均重启机器生效

[root@localhost ~]# reboot

 

集群规划

集群机器swarm-manager01swarm-worker01swarm-worker02
集群角色managerworkerworker

 

Docker Swarm集群配置

初始化manger

[root@swarm-manager01 ~]# docker swarm init
Swarm initialized: current node (rcmlknoggnz81dfd5b5k778o7) is now a manager.
​
To add a worker to this swarm, run the following command:
​docker swarm join --token SWMTKN-1-3do5k5ownszjyyql3nznnmndft3ws7bzclhb4hwj2h8v3s325j-0i8z9k57p7hk141srhemsci4e 192.168.193.151:2377
​
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
​
[root@swarm-manager01 ~]#

根据输出日志提示,找到如下内容,并复制添加worker的命令:

添加worker命令如下:
docker swarm join --token SWMTKN-1-3do5k5ownszjyyql3nznnmndft3ws7bzclhb4hwj2h8v3s325j-0i8z9k57p7hk141srhemsci4e 192.168.193.151:2377
注意:--token后面的值每个人的会不一样,一定要复制自己执行命令输出日志中的docker swarm join命令。
​
添加manager命令如下:
docker swarm join-token manager

添加worker

在worker角色的机器,执行上一步从日志中复制得到的添加worker命令

swarm-worker01机器

[root@swarm-worker01 ~]# docker swarm join --token SWMTKN-1-3do5k5ownszjyyql3nznnmndft3ws7bzclhb4hwj2h8v3s325j-0i8z9k57p7hk141srhemsci4e 192.168.193.151:2377
This node joined a swarm as a worker.

swarm-worker02机器

[root@swarm-worker02 ~]# docker swarm join --token SWMTKN-1-3do5k5ownszjyyql3nznnmndft3ws7bzclhb4hwj2h8v3s325j-0i8z9k57p7hk141srhemsci4e 192.168.193.151:2377
This node joined a swarm as a worker.

提示:

如果找不到token,使用如下命令查看token

[root@swarm-manager01 ~]# docker swarm join-token worker
To add a worker to this swarm, run the following command:
​docker swarm join --token SWMTKN-1-3do5k5ownszjyyql3nznnmndft3ws7bzclhb4hwj2h8v3s325j-0i8z9k57p7hk141srhemsci4e 192.168.193.151:2377

验证信息​

docker info看到Swarm: active及Swarm相关信息为正常

[root@swarm-manager01 ~]# docker info
Client: Docker Engine - CommunityVersion:    27.3.1Context:    defaultDebug Mode: falsePlugins:buildx: Docker Buildx (Docker Inc.)Version:  v0.17.1Path:     /usr/libexec/docker/cli-plugins/docker-buildxcompose: Docker Compose (Docker Inc.)Version:  v2.29.7Path:     /usr/libexec/docker/cli-plugins/docker-compose
​
Server:Containers: 1Running: 0Paused: 0Stopped: 1Images: 1Server Version: 27.3.1Storage Driver: overlay2Backing Filesystem: xfsSupports d_type: trueUsing metacopy: falseNative Overlay Diff: trueuserxattr: falseLogging Driver: json-fileCgroup Driver: systemdCgroup Version: 2Plugins:Volume: localNetwork: bridge host ipvlan macvlan null overlayLog: awslogs fluentd gcplogs gelf journald json-file local splunk syslogSwarm: activeNodeID: rcmlknoggnz81dfd5b5k778o7Is Manager: trueClusterID: h5pz39obu2gnufvdkm4masczpManagers: 1Nodes: 3Data Path Port: 4789Orchestration:Task History Retention Limit: 5Raft:Snapshot Interval: 10000Number of Old Snapshots to Retain: 0Heartbeat Tick: 1Election Tick: 10Dispatcher:Heartbeat Period: 5 secondsCA Configuration:Expiry Duration: 3 monthsForce Rotate: 0Autolock Managers: falseRoot Rotation In Progress: falseNode Address: 192.168.193.151Manager Addresses:192.168.193.151:2377Runtimes: io.containerd.runc.v2 runcDefault Runtime: runcInit Binary: docker-initcontainerd version: 7f7fdf5fed64eb6a7caf99b3e12efcf9d60e311crunc version: v1.1.14-0-g2c9f560init version: de40ad0Security Options:seccompProfile: builtincgroupnsKernel Version: 5.14.0-427.37.1.el9_4.x86_64Operating System: Rocky Linux 9.4 (Blue Onyx)OSType: linuxArchitecture: x86_64CPUs: 4Total Memory: 3.543GiBName: swarm-manager01ID: dbd0ed83-4c48-4b00-9892-951baaed7707Docker Root Dir: /var/lib/dockerDebug Mode: falseExperimental: falseInsecure Registries:127.0.0.0/8Registry Mirrors:https://public.ecr.aws/https://dockerhub.timeweb.cloud/https://docker.m.daocloud.io/https://kfp63jaj.mirror.aliyuncs.com/https://docker.mirrors.ustc.edu.cn/https://mirror.iscas.ac.cn/https://docker.registry.cyou/https://docker-cf.registry.cyou/https://dockercf.jsdelivr.fyi/https://docker.jsdelivr.fyi/https://dockertest.jsdelivr.fyi/https://mirror.aliyuncs.com/https://dockerproxy.com/https://mirror.baidubce.com/https://docker.nju.edu.cn/https://docker.mirrors.sjtug.sjtu.edu.cn/https://docker.rainbond.cc/Live Restore Enabled: false
​
WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled
[root@swarm-manager01 ~]# 

上面docker info命令输出内容较多,可以用如下命令过滤出swarm相关信息,如下

[root@swarm-manager01 ~]# docker info -f '{{.Swarm}}'
{rcmlknoggnz81dfd5b5k778o7 192.168.193.151 active true  [{rcmlknoggnz81dfd5b5k778o7 192.168.193.151:2377}] 3 1 0xc0003989a0 []}
​

查看节点信息

[root@swarm-manager01 ~]# docker node ls
ID                            HOSTNAME          STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
rcmlknoggnz81dfd5b5k778o7 *   swarm-manager01   Ready     Active         Leader           27.3.1
cl5d8lcbsr63gr6tc4k0z7wg0     swarm-worker01    Ready     Active                          27.3.1
vbsdoepbteh83v2lq58jbdraa     swarm-worker02    Ready     Active                          27.3.1
​

看到AVAILABILITY均为Active,其中swarm-manager01机器是Leader

节点下线

[root@swarm-manager01 ~]# docker node update --availability drain swarm-worker01
swarm-worker01
[root@swarm-manager01 ~]# docker node ls
ID                            HOSTNAME          STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
rcmlknoggnz81dfd5b5k778o7 *   swarm-manager01   Ready     Active         Leader           27.3.1
cl5d8lcbsr63gr6tc4k0z7wg0     swarm-worker01    Ready     Drain                           27.3.1
vbsdoepbteh83v2lq58jbdraa     swarm-worker02    Ready     Active                          27.3.1
​

节点上线

[root@swarm-manager01 ~]# docker node update --availability active swarm-worker01
swarm-worker01
[root@swarm-manager01 ~]# docker node ls
ID                            HOSTNAME          STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
rcmlknoggnz81dfd5b5k778o7 *   swarm-manager01   Ready     Active         Leader           27.3.1
cl5d8lcbsr63gr6tc4k0z7wg0     swarm-worker01    Ready     Active                          27.3.1
vbsdoepbteh83v2lq58jbdraa     swarm-worker02    Ready     Active                          27.3.1
​

删除worker节点

[root@swarm-manager01 ~]# docker node rm -f swarm-worker02
swarm-worker02
[root@swarm-manager01 ~]# docker node ls
ID                            HOSTNAME          STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
rcmlknoggnz81dfd5b5k778o7 *   swarm-manager01   Ready     Active         Leader           27.3.1
cl5d8lcbsr63gr6tc4k0z7wg0     swarm-worker01    Ready     Active                          27.3.1
​

再次加入worker节点

查看token
[root@swarm-manager01 ~]# docker swarm join-token worker
To add a worker to this swarm, run the following command:
​docker swarm join --token SWMTKN-1-3do5k5ownszjyyql3nznnmndft3ws7bzclhb4hwj2h8v3s325j-0i8z9k57p7hk141srhemsci4e 192.168.193.151:2377
​
[root@swarm-manager01 ~]#
​
在需要加入的worker节点运行如下命令
[root@swarm-worker02 ~]# docker swarm join --token SWMTKN-1-3do5k5ownszjyyql3nznnmndft3ws7bzclhb4hwj2h8v3s325j-0i8z9k57p7hk141srhemsci4e 192.168.193.151:2377
Error response from daemon: This node is already part of a swarm. Use "docker swarm leave" to leave this swarm and join another one.
​
先执行自动离开
[root@swarm-worker02 ~]# docker swarm leave
Node left the swarm.
​
重新加入集群
[root@swarm-worker02 ~]# docker swarm join --token SWMTKN-1-3do5k5ownszjyyql3nznnmndft3ws7bzclhb4hwj2h8v3s325j-0i8z9k57p7hk141srhemsci4e 192.168.193.151:2377
This node joined a swarm as a worker.
​
​
在manager主机执行
[root@swarm-manager01 ~]# docker node ls
ID                            HOSTNAME          STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
rcmlknoggnz81dfd5b5k778o7 *   swarm-manager01   Ready     Active         Leader           27.3.1
cl5d8lcbsr63gr6tc4k0z7wg0     swarm-worker01    Ready     Active                          27.3.1
ywp8ooinwiua72af3psojepjr     swarm-worker02    Ready     Active                          27.3.1
​
​
​

将 worker 提升为 manager

docker node promote <主机或ID>

操作

[root@swarm-manager01 ~]# docker node ls
ID                            HOSTNAME          STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
rcmlknoggnz81dfd5b5k778o7 *   swarm-manager01   Ready     Active         Leader           27.3.1
cl5d8lcbsr63gr6tc4k0z7wg0     swarm-worker01    Ready     Active                          27.3.1
ywp8ooinwiua72af3psojepjr     swarm-worker02    Ready     Active                          27.3.1
​
[root@swarm-manager01 ~]# docker node promote swarm-worker01
Node swarm-worker01 promoted to a manager in the swarm.
​
[root@swarm-manager01 ~]# docker node ls
ID                            HOSTNAME          STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
rcmlknoggnz81dfd5b5k778o7 *   swarm-manager01   Ready     Active         Leader           27.3.1
cl5d8lcbsr63gr6tc4k0z7wg0     swarm-worker01    Ready     Active         Reachable        27.3.1
ywp8ooinwiua72af3psojepjr     swarm-worker02    Ready     Active                          27.3.1
​
[root@swarm-manager01 ~]# docker node promote ywp8ooinwiua72af3psojepjr
Node ywp8ooinwiua72af3psojepjr promoted to a manager in the swarm.
​
[root@swarm-manager01 ~]# docker node ls
ID                            HOSTNAME          STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
rcmlknoggnz81dfd5b5k778o7 *   swarm-manager01   Ready     Active         Leader           27.3.1
cl5d8lcbsr63gr6tc4k0z7wg0     swarm-worker01    Ready     Active         Reachable        27.3.1
ywp8ooinwiua72af3psojepjr     swarm-worker02    Ready     Active         Reachable        27.3.1
​

当Leader的Manager出故障时,Reachable的主机就通过一定机制(Raft算法)当选为Leader

Leader机器关机
[root@swarm-manager01 ~]# init 0
​
worker01机器执行命令,看到worker01变为了Leader
[root@swarm-worker01 ~]# docker node ls
ID                            HOSTNAME          STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
rcmlknoggnz81dfd5b5k778o7     swarm-manager01   Unknown   Active         Unreachable      27.3.1
cl5d8lcbsr63gr6tc4k0z7wg0 *   swarm-worker01    Unknown   Active         Leader           27.3.1
ywp8ooinwiua72af3psojepjr     swarm-worker02    Unknown   Active         Reachable        27.3.1
​
当manager01再次开机,查看节点状态
[root@swarm-manager01 ~]# docker node ls
ID                            HOSTNAME          STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
rcmlknoggnz81dfd5b5k778o7 *   swarm-manager01   Ready     Active         Reachable        27.3.1
cl5d8lcbsr63gr6tc4k0z7wg0     swarm-worker01    Ready     Active         Leader           27.3.1
ywp8ooinwiua72af3psojepjr     swarm-worker02    Ready     Active         Reachable        27.3.1
​

Manager节点降级为worker

docker node demote <主机或ID>

操作过程

[root@swarm-manager01 ~]# docker node ls
ID                            HOSTNAME          STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
rcmlknoggnz81dfd5b5k778o7 *   swarm-manager01   Ready     Active         Reachable        27.3.1
cl5d8lcbsr63gr6tc4k0z7wg0     swarm-worker01    Ready     Active         Leader           27.3.1
ywp8ooinwiua72af3psojepjr     swarm-worker02    Ready     Active         Reachable        27.3.1
​
​
[root@swarm-manager01 ~]# docker node demote swarm-worker01
Manager swarm-worker01 demoted in the swarm.
​
[root@swarm-manager01 ~]# docker node ls
ID                            HOSTNAME          STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
rcmlknoggnz81dfd5b5k778o7 *   swarm-manager01   Ready     Active         Leader           27.3.1
cl5d8lcbsr63gr6tc4k0z7wg0     swarm-worker01    Ready     Active                          27.3.1
ywp8ooinwiua72af3psojepjr     swarm-worker02    Ready     Active         Reachable        27.3.1
​
[root@swarm-manager01 ~]# docker node demote swarm-worker02
Manager swarm-worker02 demoted in the swarm.
​
[root@swarm-manager01 ~]# docker node ls
ID                            HOSTNAME          STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
rcmlknoggnz81dfd5b5k778o7 *   swarm-manager01   Ready     Active         Leader           27.3.1
cl5d8lcbsr63gr6tc4k0z7wg0     swarm-worker01    Ready     Active                          27.3.1
ywp8ooinwiua72af3psojepjr     swarm-worker02    Ready     Active                          27.3.1
​

Docker Swarm集群的使用

部署服务

部署服务
[root@swarm-manager01 ~]# docker service create --replicas 1 --name nginxtest -p 80:80 nginx 
16usw3u7rpzz2n8trlx139k1k
overall progress: 0 out of 1 tasks 
overall progress: 0 out of 1 tasks 
overall progress: 0 out of 1 tasks 
overall progress: 1 out of 1 tasks 
1/1: running   [==================================================>] 
verify: Service 16usw3u7rpzz2n8trlx139k1k converged
​
查看镜像,只有1台机器有nginx镜像
[root@swarm-manager01 ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
hello-world   latest    d2c94e258dcb   17 months ago   13.3kB
​
[root@swarm-worker01 ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
nginx         <none>    7f553e8bbc89   4 days ago      192MB
hello-world   latest    d2c94e258dcb   17 months ago   13.3kB
​
[root@swarm-worker02 ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
hello-world   latest    d2c94e258dcb   17 months ago   13.3kB
​
​

查看服务列表

在manager机器执行如下命令
[root@swarm-manager01 ~]# docker service ls
ID             NAME        MODE         REPLICAS   IMAGE          PORTS
16usw3u7rpzz   nginxtest   replicated   1/1        nginx:latest   *:80->80/tcp
​

访问服务

使用swarm集群任意一台机器的主机名:端口,都可以访问到服务内容

​
[root@swarm-manager01 ~]# curl swarm-manager01:80
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
​
<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>
​
<p><em>Thank you for using nginx.</em></p>
</body>
</html>
​
[root@swarm-manager01 ~]# curl swarm-worker01:80
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
​
<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>
​
<p><em>Thank you for using nginx.</em></p>
</body>
</html>
[root@swarm-manager01 ~]# curl swarm-worker02:80
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
​
<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>
​
<p><em>Thank you for using nginx.</em></p>
</body>
</html>
[root@swarm-manager01 ~]# curl nginxtest:80
curl: (6) Could not resolve host: nginxtest
[root@swarm-manager01 ~]# 
​

显示详细信息

docker service inspect --pretty <service-id || service-name> 
[root@swarm-manager01 ~]# docker service inspect --pretty nginxtest
​
ID:     16usw3u7rpzz2n8trlx139k1k
Name:       nginxtest
Service Mode:   ReplicatedReplicas:  1
Placement:
UpdateConfig:Parallelism:   1On failure:    pauseMonitoring Period: 5sMax failure ratio: 0Update order:      stop-first
RollbackConfig:Parallelism:   1On failure:    pauseMonitoring Period: 5sMax failure ratio: 0Rollback order:    stop-first
ContainerSpec:Image:     nginx:latest@sha256:d2eb56950b84efe34f966a2b92efb1a1a2ea53e7e93b94cdf45a27cf3cd47fc0Init:      false
Resources:
Endpoint Mode:  vip
Ports:PublishedPort = 80Protocol = tcpTargetPort = 80PublishMode = ingress 
​
[root@swarm-manager01 ~]# 
​

查看哪些节点正在运行服务

docker service ps <service-id || service-name> 
​
[root@swarm-manager01 ~]# docker service ps nginxtest
ID             NAME              IMAGE          NODE              DESIRED STATE   CURRENT STATE             ERROR                              PORTS
8386rrtz7333   nginxtest.1       nginx:latest   swarm-worker01    Running         Running 12 minutes ago   
lm8o4xs3wbag    \_ nginxtest.1   nginx:latest   swarm-manager01   Shutdown        Rejected 13 minutes ago   "No such image: nginx:latest@s…"   
ogm99z0w9q40    \_ nginxtest.1   nginx:latest   swarm-worker01    Shutdown        Shutdown 12 minutes ago  
​
​

服务扩容

​
服务扩容
[root@swarm-manager01 ~]# docker service scale nginxtest=3
nginxtest scaled to 3
overall progress: 3 out of 3 tasks 
1/3: running   [==================================================>] 
2/3: running   [==================================================>] 
3/3: running   [==================================================>] 
verify: Service nginxtest converged 
​
查看进程
[root@swarm-manager01 ~]# docker service ps nginxtest
ID             NAME              IMAGE          NODE              DESIRED STATE   CURRENT STATE                ERROR                              PORTS
8386rrtz7333   nginxtest.1       nginx:latest   swarm-worker01    Running         Running 16 minutes ago  
lm8o4xs3wbag    \_ nginxtest.1   nginx:latest   swarm-manager01   Shutdown        Rejected 16 minutes ago      "No such image: nginx:latest@s…"   
ogm99z0w9q40    \_ nginxtest.1   nginx:latest   swarm-worker01    Shutdown        Shutdown 16 minutes ago   
qsfgvj08ztfp   nginxtest.2       nginx:latest   swarm-worker02    Running         Running 35 seconds ago  
sa1wnrlun0v0   nginxtest.3       nginx:latest   swarm-manager01   Running         Running about a minute ago   
​
​
查看镜像,三台机器都有nginx镜像
[root@swarm-manager01 ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
nginx         <none>    7f553e8bbc89   4 days ago      192MB
hello-world   latest    d2c94e258dcb   17 months ago   13.3kB
​
[root@swarm-worker01 ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
nginx         <none>    7f553e8bbc89   4 days ago      192MB
hello-world   latest    d2c94e258dcb   17 months ago   13.3kB
​
[root@swarm-worker02 ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
nginx         <none>    7f553e8bbc89   4 days ago      192MB
hello-world   latest    d2c94e258dcb   17 months ago   13.3kB
​
访问测试,访问curl m1:80   curl w1:80  curl w2:80 均可访问到
[root@swarm-worker02 ~]# curl w2:80
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
​
<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>
​
<p><em>Thank you for using nginx.</em></p>
</body>
</html>
​

服务缩容

[root@swarm-manager01 ~]# docker service scale nginxtest=1
nginxtest scaled to 1
overall progress: 1 out of 1 tasks 
1/1: running   [==================================================>] 
verify: Service nginxtest converged 
​
[root@swarm-manager01 ~]# docker service ps nginxtest
ID             NAME              IMAGE          NODE              DESIRED STATE   CURRENT STATE             ERROR                              PORTS
8386rrtz7333   nginxtest.1       nginx:latest   swarm-worker01    Running         Running 23 minutes ago   
lm8o4xs3wbag    \_ nginxtest.1   nginx:latest   swarm-manager01   Shutdown        Rejected 23 minutes ago   "No such image: nginx:latest@s…"   
ogm99z0w9q40    \_ nginxtest.1   nginx:latest   swarm-worker01    Shutdown        Shutdown 23 minutes ago  
​

删除服务

docker service rm <service-id || service-name>
​
[root@swarm-manager01 ~]# docker service rm nginxtest
nginxtest
[root@swarm-manager01 ~]# docker service ls
ID        NAME      MODE      REPLICAS   IMAGE     PORTS
​
​
​

删除不需要的镜像

# 缩容和删除服务,均不会删除下载的镜像
[root@swarm-manager01 ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
nginx         <none>    7f553e8bbc89   4 days ago      192MB
hello-world   latest    d2c94e258dcb   17 months ago   13.3kB
​
​
[root@swarm-manager01 ~]# docker rmi 7f5
[root@swarm-worker01 ~]# docker rmi 7f5
[root@swarm-worker02 ~]# docker rmi 7f5

滚动更新服务

部署一个nginx服务,版本号为1.26.2,然后升级版本为1.27.2。

部署一个nginx:1.26.2服务
[root@swarm-manager01 ~]# docker service create --replicas 3 --name nginxtestupd --update-delay 10s -p 80:80 nginx:1.26.2
79s8sd9pv1pqpqxk0tk7w7rvs
overall progress: 3 out of 3 tasks 
1/3: running   [==================================================>] 
2/3: running   [==================================================>] 
3/3: running   [==================================================>] 
verify: Service 79s8sd9pv1pqpqxk0tk7w7rvs converged 
​
该标志配置对服务任务或任务集的更新之间的时间延迟。你可以将时间描述为秒数、分钟数或小时数的组合   --update-delay   
​
[root@swarm-manager01 ~]# docker service inspect --pretty nginxtestupd
​
ID:     79s8sd9pv1pqpqxk0tk7w7rvs
Name:       nginxtestupd
Service Mode:   ReplicatedReplicas:  3
Placement:
UpdateConfig:Parallelism:   1Delay:     10sOn failure:    pauseMonitoring Period: 5sMax failure ratio: 0Update order:      stop-first
RollbackConfig:Parallelism:   1On failure:    pauseMonitoring Period: 5sMax failure ratio: 0Rollback order:    stop-first
ContainerSpec:Image:     nginx:1.26.2@sha256:e489771d6058fca1d9bd57757b0136383c454989a868c62cded241ae1513e47fInit:      false
Resources:
Endpoint Mode:  vip
Ports:PublishedPort = 80Protocol = tcpTargetPort = 80PublishMode = ingress 
​
[root@swarm-manager01 ~]#

滚动更新镜像

docker service update --image nginx:1.27.2 nginxtestupd
​
[root@swarm-manager01 ~]# docker service update --image nginx:1.27.2 nginxtestupd
nginxtestupd
overall progress: 3 out of 3 tasks 
1/3: running   [==================================================>] 
2/3: running   [==================================================>] 
3/3: running   [==================================================>] 
verify: Service nginxtestupd converged 
​
[root@swarm-manager01 ~]# docker service inspect --pretty nginxtestupd
​
ID:     79s8sd9pv1pqpqxk0tk7w7rvs
Name:       nginxtestupd
Service Mode:   ReplicatedReplicas:  3
UpdateStatus:State:     completedStarted:   About a minute agoCompleted: 5 seconds agoMessage:   update completed
Placement:
UpdateConfig:Parallelism:   1Delay:     10sOn failure:    pauseMonitoring Period: 5sMax failure ratio: 0Update order:      stop-first
RollbackConfig:Parallelism:   1On failure:    pauseMonitoring Period: 5sMax failure ratio: 0Rollback order:    stop-first
ContainerSpec:Image:     nginx:1.27.2@sha256:d2eb56950b84efe34f966a2b92efb1a1a2ea53e7e93b94cdf45a27cf3cd47fc0Init:      false
Resources:
Endpoint Mode:  vip
Ports:PublishedPort = 80Protocol = tcpTargetPort = 80PublishMode = ingress 
​
[root@swarm-manager01 ~]# 
​
删除服务
[root@swarm-manager01 ~]# docker service rm nginxtestupd
nginxtestupd
[root@swarm-manager01 ~]# docker service ls
ID        NAME      MODE      REPLICAS   IMAGE     PORTS
​
​

完成!enjoy it!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com