{"id":1899,"date":"2025-06-11T10:14:42","date_gmt":"2025-06-11T02:14:42","guid":{"rendered":"http:\/\/113.45.254.23\/?p=1899"},"modified":"2025-06-11T10:15:28","modified_gmt":"2025-06-11T02:15:28","slug":"%e5%88%9b%e5%bb%badockers-swarm%e9%9b%86%e7%be%a4","status":"publish","type":"post","link":"http:\/\/113.45.254.23\/?p=1899","title":{"rendered":"\u521b\u5efa\u53ca\u5220\u9664dockers Swarm\u96c6\u7fa4"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">\u4e00\u3001\u5b9e\u9a8c\u73af\u5883\uff1a<\/h2>\n\n\n\n<p>\u8fd8\u539f\u65b0\u7cfb\u7edf\u540e\uff0c\u521b\u5efa3\u53f0docker\uff0c\u5f00\u673a\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u4e8c\u3001\u4fee\u6539\u4e09\u53f0\u8282\u70b9\u7684host\u6587\u4ef6\u3001\u4fee\u6539\u4e09\u53f0\u8282\u70b9\u540d\u79f0\uff1a<\/h2>\n\n\n\n<p>Node1\u4e3b\u8282\u70b9\uff0cnode2\\node3\u5de5\u4f5c\u8282\u70b9<\/p>\n\n\n\n<p>node01.benet.com<\/p>\n\n\n\n<p>node02.benet.com<\/p>\n\n\n\n<p>node03.benet.com<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Vim \/etc\/hosts<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/113.45.254.23\/wp-content\/uploads\/2025\/06\/image-23.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"690\" height=\"376\" data-original=\"http:\/\/113.45.254.23\/wp-content\/uploads\/2025\/06\/image-23.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-1900\"  sizes=\"auto, (max-width: 690px) 100vw, 690px\" \/><\/div><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/113.45.254.23\/wp-content\/uploads\/2025\/06\/image-24.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"692\" height=\"395\" data-original=\"http:\/\/113.45.254.23\/wp-content\/uploads\/2025\/06\/image-24.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-1901\"  sizes=\"auto, (max-width: 692px) 100vw, 692px\" \/><\/div><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>192.168.7.10 node01.benet.com\n192.168.7.11 node02.benet.com\n192.168.7.12 node03.benet.com<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/113.45.254.23\/wp-content\/uploads\/2025\/06\/image-25.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"692\" height=\"382\" data-original=\"http:\/\/113.45.254.23\/wp-content\/uploads\/2025\/06\/image-25.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-1902\"  sizes=\"auto, (max-width: 692px) 100vw, 692px\" \/><\/div><\/figure>\n\n\n\n<p>\u00a0&#8220;live-restore&#8221;: false,<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/113.45.254.23\/wp-content\/uploads\/2025\/06\/image-26-1024x613.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"613\" data-original=\"http:\/\/113.45.254.23\/wp-content\/uploads\/2025\/06\/image-26-1024x613.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-1903\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;root@node01 ~]# systemctl restart docker \u91cd\u542fdocker<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u4e09\u3001\u521d\u59cb\u5316swarm\u96c6\u7fa4\u3001\u5de5\u4f5c\u8282\u70b9\u52a0\u5165\u96c6\u7fa4\u7684\u547d\u4ee4<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;root@node01 ~]# docker swarm init\t\t\t\u521d\u59cb\u5316swarm\u96c6\u7fa4\nSwarm initialized: current node (0qre8ffdk6pkthiglkpkrqagt) is now a manager.\n\nTo add a worker to this swarm, run the following command:\n\n    docker swarm join --token SWMTKN-1-4hxebsjeyisyajtqm1ow8pp9p5rhlv9zs1paq32y78zmacp86                                                                                                              m-5ffv7jf0ns21vzfzmsly4lwg1 192.168.7.10:2377\n\nTo add a manager to this swarm, run 'docker swarm join-token manager' and follow the ins                                                                                                              tructions.\t\t\t\t\t\t\t\t\t\t\u5de5\u4f5c\u8282\u70b9\u52a0\u5165\u96c6\u7fa4\u7684\u547d\u4ee4\n&#91;root@node01 ~]#<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u56db\u3001\u5c06node02\u3001node03\u8282\u70b9\u52a0\u5165\u5230\u96c6\u7fa4\u4e2d<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;root@node02 ~]# docker swarm join --token SWMTKN-1-4hxebsjeyisyajtqm1ow8pp9p5rhlv9zs1paq32y78zmacp86m-5ffv7jf0ns21vzfzmsly4lwg1 192.168.7.10:2377                                                                                This node joined a swarm as a worker.\t\t\t\t\u5c06node2\u8282\u70b9\u52a0\u5165\u5230\u96c6\u7fa4\u4e2d\n&#91;root@node02 ~]#\n&#91;root@node03 ~]# docker swarm join --token SWMTKN-1-4hxebsjeyisyajtqm1ow8pp9p5rhlv9zs1paq32y78zmacp86m-5ffv7jf0ns21vzfzmsly4lwg1 192.168.7.10:2377\nThis node joined a swarm as a worker.\t\t\t\u5c06node3\u8282\u70b9\u52a0\u5165\u5230\u96c6\u7fa4\u4e2d\n&#91;root@node03 ~]#<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u4e94\u3001\u5728\u4e3b\u8282\u70b9node01\u4e0a\u67e5\u770b\u96c6\u7fa4\u8282\u70b9\u4fe1\u606f<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;root@node01 ~]# docker node ls\t\t\t\t\u67e5\u770b\u96c6\u7fa4\u8282\u70b9\u4fe1\u606f\nID                            HOSTNAME           STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION\n0qre8ffdk6pkthiglkpkrqagt *   node01.benet.com   Ready     Active         Leader           28.2.2\n4c8s73esc17uq7ftieytj8c6f     node02.benet.com   Ready     Active                          28.2.2\nofqnmn4zfx5b9dmvbh99qvaj4     node03.benet.com   Ready     Active                          28.2.2\n&#91;root@node01 ~]#<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;root@node01 ~]# docker node ls\t\t\t\t\u67e5\u770b\u96c6\u7fa4\u8282\u70b9\u4fe1\u606f\nID                            HOSTNAME           STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION\n0qre8ffdk6pkthiglkpkrqagt *   node01.benet.com   Ready     Active         Leader           28.2.2\n4c8s73esc17uq7ftieytj8c6f     node02.benet.com   Ready     Active                          28.2.2\nofqnmn4zfx5b9dmvbh99qvaj4     node03.benet.com   Ready     Active                          28.2.2\n&#91;root@node01 ~]#<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u516d\u3001\u4e09\u53f0\u673a\u5668\u505a\u65f6\u95f4\u540c\u6b65<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;root@node01 ~]# vim Dockerfile\t\t\t\t\u521b\u5efadockerfile\u6587\u4ef6\n&#91;root@node01 ~]#\nFROM rockylinux:9.2\t\t\t\t\t\u4f7f\u7528rocky9.2\u7684\u955c\u50cf\nMAINTAINER serverworld &lt;admin@srv.world>\t\t\u4f5c\u8005\u4fe1\u606f\nRUN yum -y install httpd\t\t\t\t\t\u6267\u884c\u547d\u4ee4\u5b89\u88c5\u963f\u5e15\u5947\nRUN echo \"node01.benet.com\" > \/var\/www\/html\/index.html\t\u6267\u884c\u547d\u4ee4\u5b89\u88c5\u963f\u5e15\u5947\u7684\u6d4b\u8bd5\u9875\u9762\nEXPOSE 80\t\t\t\t\t\t\t\u663e\u793a80\u7aef\u53e3\nCMD &#91;\"-D\", \"FOREGROUND\"]\t\t\t\t\u8be5\u5bb9\u5668\u542f\u52a8\u65f6\u5728\u540e\u53f0\u8fd0\u884c\nENTRYPOINT &#91;\"\/usr\/sbin\/httpd\"]\t\t\t\u914d\u7f6e\u5bb9\u5668 \u542f\u52a8\u963f\u5e15\u5947<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;root@node02 ~]# vim Dockerfile\t\t\t\t\u521b\u5efadockerfile\u6587\u4ef6\nFROM rockylinux:9.2\t\t\t\t\t\u4f7f\u7528rocky9.2\u7684\u955c\u50cf\nMAINTAINER serverworld &lt;admin@srv.world>\t\u4f5c\u8005\u4fe1\u606f\nRUN yum -y install httpd\t\t\t\t\t\u6267\u884c\u547d\u4ee4\u5b89\u88c5\u963f\u5e15\u5947\nRUN echo \"node02.benet.com\" > \/var\/www\/html\/index.html\t\u6267\u884c\u547d\u4ee4\u5b89\u88c5\u963f\u5e15\u5947\u7684\u6d4b\u8bd5\u9875\u9762\nEXPOSE 80\t\t\t\t\t\t\t\u663e\u793a80\u7aef\u53e3\nCMD &#91;\"-D\", \"FOREGROUND\"]\t\t\t\t\u8be5\u5bb9\u5668\u542f\u52a8\u65f6\u5728\u540e\u53f0\u8fd0\u884c\nENTRYPOINT &#91;\"\/usr\/sbin\/httpd\"]\t\t\t\u914d\u7f6e\u5bb9\u5668 \u542f\u52a8\u963f\u5e15\u5947<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;root@node03 ~]# vim Dockerfile\t\t\t\t\u521b\u5efadockerfile\u6587\u4ef6\nFROM rockylinux:9.2\t\t\t\t\t\u4f7f\u7528rocky9.2\u7684\u955c\u50cf\nMAINTAINER serverworld &lt;admin@srv.world>\t\u4f5c\u8005\u4fe1\u606f\nRUN yum -y install httpd\t\t\t\t\u6267\u884c\u547d\u4ee4\u5b89\u88c5\u963f\u5e15\u5947\nRUN echo \"node03.benet.com\" > \/var\/www\/html\/index.html\t\u6267\u884c\u547d\u4ee4\u5b89\u88c5\u963f\u5e15\u5947\u7684\u6d4b\u8bd5\u9875\u9762\nEXPOSE 80\t\t\t\t\t\t\u663e\u793a80\u7aef\u53e3\nCMD &#91;\"-D\", \"FOREGROUND\"]\t\t\t\u8be5\u5bb9\u5668\u542f\u52a8\u65f6\u5728\u540e\u53f0\u8fd0\u884c\nENTRYPOINT &#91;\"\/usr\/sbin\/httpd\"]\t\t\u914d\u7f6e\u5bb9\u5668 \u542f\u52a8\u963f\u5e15\u5947<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u4e03\u3001\u67e5\u770b\u4e09\u53f0\u673a\u5668\u4e0a\u662f\u5426\u6709web_server \u955c\u50cf\u3001\u67e5\u770b\u6b63\u5728\u8fd0\u884c\u7684\u5bb9\u5668<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;root@node01 ~]# docker images\t\t\t\t\t\u67e5\u770bdocker\u955c\u50cf\nREPOSITORY   TAG       IMAGE ID       CREATED         S                                                          IZE\nweb_server   latest    ab2aa9effc56   20 hours ago    2                                                          34MB\nnginx        1.26.0    94543a6c1aef   13 months ago   1                                                          88MB\n&#91;root@node01 ~]# docker run -d -p 80:80 web_server                                                                     server\t\t\t\t\t\t\t\t\t\tdocker\u4f7f\u7528web_server\u7684\u955c\u50cf\u5728\u540e\u53f0\u751f\u6210web_server\u7684\u955c\u50cf\uff0c\u5efa\u7acb\u7aef\u53e3\u6620\u5c04\uff0c\u5bbf\u4e3b\u673a\u768480\u6620\u5c04\u5230\u5bb9\u5668\u768480\n840571d66c9782472a85cc781a14436eb54fef3a96af                                                                     175010c9c43b49fb9d6f\n&#91;root@node01 ~]# docker ps\t\t\t\t\t\t\u67e5\u770b\u6b63\u5728\u8fd0\u884c\u7684\u5bb9\u5668\nCONTAINER ID   IMAGE        COMMAND                                                                                        CREATED          STATUS          P                                                                     ORTS                                 NAMES\n840571d66c97   web_server   \"\/usr\/sbin\/httpd                                                                      -D \u2026\"   14 seconds ago   Up 13 seconds   0.                                                                     0.0.0:80->80\/tcp, &#91;::]:80->80\/tcp   xenodoch                                                                     ial_mahavira\n&#91;root@node01 ~]#\n&#91;root@node02 ~]# docker images\nREPOSITORY   TAG       IMAGE ID       CREATED         SIZE\nweb_server   latest    69d72e4babdf   20 hours ago    234MB\nnginx        1.26.0    94543a6c1aef   13 months ago   188MB\n&#91;root@node02 ~]# docker run -d -p 80:80 web_server\nac395c32e369f4185425b9b639401bc66382a9e0c4e0efa91b9d1b1223f116                                                                                                99\n&#91;root@node02 ~]# docker ps\nCONTAINER ID   IMAGE        COMMAND                  CREATED                                                                                                          STATUS          PORTS                                                                                                                                 NAMES\nac395c32e369   web_server   \"\/usr\/sbin\/httpd -D \u2026\"   15 second                                                                                                s ago   Up 14 seconds   0.0.0.0:80->80\/tcp, &#91;::]:80->80\/tcp                                                                                                   gallant_hypatia\n&#91;root@node02 ~]#\n&#91;root@node03 ~]# docker images\nREPOSITORY   TAG       IMAGE ID       CREATED         S                                                          IZE\nweb_server   latest    0dd4dd1bcad2   20 hours ago    2                                                          34MB\nnginx        1.26.0    94543a6c1aef   13 months ago   1                                                          88MB\n&#91;root@node03 ~]# docker run -d -p 80:80 web_server                                                                     server\n4c06120c95a63d5a0c772dd68a6d132684030ccdf10d                                                                     1141e4b551b24500bc56\n&#91;root@node03 ~]# docker ps\nCONTAINER ID   IMAGE        COMMAND                                                                                       CREATED          STATUS          PO                                                                     RTS                                 NAMES\n4c06120c95a6   web_server   \"\/usr\/sbin\/httpd                                                                      -D \u2026\"   23 seconds ago   Up 22 seconds   0.                                                                     0.0.0:80->80\/tcp, &#91;::]:80->80\/tcp   pedantic                                                                     _chandrasekhar\n&#91;root@node03 ~]#<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u516b\u3001\u4e3b\u8282\u70b9node01 docker\u670d\u52a1\u521b\u5efaswarm\u96c6\u7fa4<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;root@node01 ~]# docker service create --name swarm_cluster --replicas=2 -p 80:80 web_server:latest  docker\u670d\u52a1\u521b\u5efaswarm\u96c6\u7fa4\n--replicas=2 \u526f\u672c\u65702 \t\u5e76\u5efa\u7acb\u7aef\u53e3\u6620\u5c04\uff0c\u5bbf\u4e3b\u673a\u768480\u6620\u5c04\u5230\u5bb9\u5668\u768480<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;root@node01 ~]# docker service ls\t\t\t\t  \u67e5\u770bdocker\u670d\u52a1\nID             NAME            MODE         REPLICAS   IMAGE               PORTS\nrd3od6qm3a07   swarm_cluster   replicated   2\/2        web_server:latest   *:80->80\/tcp\n&#91;root@node01 ~]# docker service ps swarm_cluster\nID             NAME              IMAGE               NODE               DESIRED STATE   CURRENT STATE                ERROR     PORTS\nz9w8zhw0zzlo   swarm_cluster.1   web_server:latest   node01.benet.com   Running         Running about a minute ago\nqoa06btby7jq   swarm_cluster.2   web_server:latest   node03.benet.com   Running         Running 2 minutes ago    \n&#91;root@node01 ~]# docker service inspect swarm_cluster --pretty\t\t\u67e5\u770bswarm\u96c6\u7fa4\u7684\u8be6\u7ec6\u4fe1\u606f\n\nID:             rd3od6qm3a075699chke8u8g3\nName:           swarm_cluster\nService Mode:   Replicated\n Replicas:      2\nPlacement:<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;root@node01 ~]# curl 192.168.7.10\t\t\u8bbf\u95ee\u4e3b\u8282\u70b9IP\nnode01.benet.com\n&#91;root@node01 ~]# curl 192.168.7.10\t\t\u91c7\u7528\u8f6e\u8be2\nnode03.benet.com\n&#91;root@node01 ~]# curl 192.168.7.10\t\t\u91c7\u7528\u8f6e\u8be2\nnode01.benet.com\n&#91;root@node01 ~]# curl 192.168.7.10\t\t\u91c7\u7528\u8f6e\u8be2\nnode03.benet.com\n&#91;root@node01 ~]# curl 192.168.7.10\nnode01.benet.com\n&#91;root@node01 ~]# curl 192.168.7.10\nnode03.benet.com\n&#91;root@node01 ~]# curl 192.168.7.10\nnode01.benet.com\n&#91;root@node01 ~]#<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u4e5d\u3001\u6d4b\u8bd5\u8bbf\u95eenode1\u7ba1\u7406\u8282\u70b9\uff0c\u662f\u5426\u8f6e\u8be2<\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/113.45.254.23\/wp-content\/uploads\/2025\/06\/image-28.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"934\" height=\"298\" data-original=\"http:\/\/113.45.254.23\/wp-content\/uploads\/2025\/06\/image-28.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-1905\"  sizes=\"auto, (max-width: 934px) 100vw, 934px\" \/><\/div><\/figure>\n\n\n\n<p>\u53ea\u6709\u4e24\u4e2a\u8282\u70b9node1,node3<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u5341\u3001\u6269\u5c55\u96c6\u7fa4\uff1a\u5c06swarm\u96c6\u7fa4\u6269\u5c55\u4e3a3\u53f0<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;root@node01 ~]# docker service scale swarm_cluster=3\t\t\u5c06swarm\u96c6\u7fa4\u6269\u5c55\u4e3a3\u53f0\nswarm_cluster scaled to 3\noverall progress: 2 out of 3 tasks\n1\/3: running   &#91;==================================================>]\n2\/3: running   &#91;==================================================>]\n3\/3: preparing &#91;=================================>                 ]<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;root@node01 ~]# docker service ps swarm_cluster\t\t\u67e5\u770b\u6b63\u5728\u8fd0\u884c\u7684swarm\u96c6\u7fa4\uff0801\u300102\u300103\uff09\nID             NAME              IMAGE               NODE               DESIRED STATE   CURRENT STATE            ERROR     PORTS\nc79c0t65bkif   swarm_cluster.1   web_server:latest   node01.benet.com   Running         Running 12 minutes ago             \nrg5ygj87yz1w   swarm_cluster.2   web_server:latest   node02.benet.com   Running         Running 12 minutes ago             \ngn3nygv9kooi   swarm_cluster.3   web_server:latest   node03.benet.com   Running         Running 18 seconds ago             \n\n&#91;root@node01 ~]# curl 192.168.7.10\t\t\u6d4b\u8bd5 \u8bbf\u95ee\u4e3b\u8282\u70b9IP\nnode02.benet.com\n&#91;root@node01 ~]# curl 192.168.7.10\t\t\t\t\t\t\t\u8f6e\u8be2\uff08\u91c7\u7528\uff09\nnode03.benet.com\n&#91;root@node01 ~]# curl 192.168.7.10\nnode01.benet.com<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u5341\u4e00\u3001\u6d4b\u8bd5\u96c6\u7fa4\u91cc\u4e09\u53f0\u673a\u5668\u662f\u5426\u6dfb\u52a0\u4e0a\u5e76\u4e14\u8f6e\u8be2<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/113.45.254.23\/wp-content\/uploads\/2025\/06\/image-29-1024x232.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"232\" data-original=\"http:\/\/113.45.254.23\/wp-content\/uploads\/2025\/06\/image-29-1024x232.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-1906\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">\u5b9e\u9a8c\u4e8c\u3001\u5982\u679c\u8fd8\u6709\u989d\u5916\u8282\u70b9\u52a0\u5165\u96c6\u7fa4\u7684\u914d\u7f6e<\/h2>\n\n\n\n<h2 class=\"wp-block-heading\">\u4e00\u3001\u5b9e\u9a8c\u73af\u5883\uff1a<\/h2>\n\n\n\n<p>\u518d\u5b89\u88c5\u4e00\u53f07.13\u547d\u540d\u4e3anode04\u8282\u70b94<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u4e8c\u3001\u914d\u7f6e\u601d\u8def\uff1a<\/h2>\n\n\n\n<p>1\u3001\u4fee\u6539\u8ba1\u7b97\u673a\u540d<\/p>\n\n\n\n<p>2\u3001\u4fee\u6539\u6240\u6709\u8282\u70b9\u7684host\u6587\u4ef6<\/p>\n\n\n\n<p>3\u3001\u8fdb\u884c\u65f6\u95f4\u540c\u6b65<\/p>\n\n\n\n<p>4\u3001\u5728\u8981\u52a0\u5165\u96c6\u7fa4\u8282\u70b9\u7684\u4e3b\u673a\u4e0a\uff0c\u5b89\u88c5docker\uff1b\uff08\u5982\uff1a\u8282\u70b904\u4e0a\u5b89\u88c5docker\uff0c\u5e76\u62cd\u6444\u5feb\u7167\u540d\u4e3a\uff1adocker;\uff09<\/p>\n\n\n\n<p>5\u3001\u5728\u65b0\u7ed3\u70b9\u4e0a\u521b\u5efadocker\u6587\u4ef6\uff0c\u6839\u636edocker\u6587\u4ef6\uff0c\u521b\u5efaweb_server\u7684\u955c\u50cf<\/p>\n\n\n\n<p>6\u3001\u5c06web_server\u955c\u50cf\uff0c\u5728\u540e\u53f0\u751f\u6210\u5bb9\u5668<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u4e09\u3001\u4fee\u6539\u8ba1\u7b97\u673a\u540d<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;root@Server13 ~]# hostnamectl set-hostname node04.benet.com\n&#91;root@Server13 ~]# exit\nlogout<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u56db\u3001\u5b89\u88c5docker\uff0c\u5e76\u62cd\u6444\u5feb\u7167\u540d\u4e3a\uff1adocker;<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;root@Server13 ~]#yum install -y yum-utils device-mapper-persistent-data lvm2\nRocky Linux 9 - BaseOS                                                           507 kB\/s | 2.5 MB     00:04\nRocky Linux 9 - AppStream                                                        2.7 MB\/s | 9.6 MB     00:03\nRocky Linux 9 - Extras                                                           9.9 kB\/s |  16 kB     00:01\nPackage device-mapper-persistent-data-1.0.9-3.el9_4.x86_64 is already installed.\nPackage lvm2-9:2.03.24-2.el9.x86_64 is already installed.\n&#91;root@Server13 ~]# yum config-manager --add-repo=https:\/\/mirrors.aliyun.com\/docker-ce\/linux\/centos\/docker-ce.repo\nAdding repo from: https:\/\/mirrors.aliyun.com\/docker-ce\/linux\/centos\/docker-ce.repo\n&#91;root@Server13 ~]# dnf -y install docker-ce\nDocker CE Stable - x86_64                                                         73 kB\/s |  73 kB     00:01\nDependencies resolved.\n&#91;root@Server13 ~]# systemctl enable --now docker\nCreated symlink \/etc\/systemd\/system\/multi-user.target.wants\/docker.service \u2192 \/usr\/lib\/systemd\/system\/docker.servi                               ce.\n&#91;root@Server13 ~]# vim \/etc\/docker\/daemon.json\t\t\u7f16\u8f91docker\u8fdb\u7a0b\u7684\u914d\u7f6e\u6587\u4ef6\n{\n    \"registry-mirrors\":&#91;\t\t\t\t\t\t\t\t\u8868\u793adockers\u4e0d\u8d77\u7528\u5b9e\u65f6\u6062\u590d\u529f\u80fd\n\n        \"https:\/\/mirror.baidubce.com\",\t\t\t\t\u5b88\u62a4\u8fdb\u7a0b\u91cd\u542f\u65f6\uff0c\u6240\u6709\u8fd0\u884c\u7684\u5bb9\u5668\u4f1a\u88ab\u5f3a\u5236\u7ec8\u6b62\n        \"https:\/\/9cpn8tt6.mirror.aliyuncs.com\",\n        \"https:\/\/registry.docker-cn.com\",\n        \"https:\/\/dockerproxy.com\",\n        \"https:\/\/mirror.baidubce.com\",\n        \"https:\/\/docker.m.daocloud.io\",\n        \"https:\/\/docker.nju.edu.cn\",\n        \"https:\/\/docker.1panel.live\",\n        \"https:\/\/hub.rat.dev\",\n        \"https:\/\/mirror-gcr.onrender.com\",\n        \"https:\/\/docker.mirrors.sjtug.sjtu.edu.cn\",\n        \"https:\/\/docker.mirrors.ustc.edu.cn\",\n        \"https:\/\/reg-mirror.qiniu.com\",\n        \"https:\/\/registry.docker-cn.com\"\n    ]\n}\n&#91;root@Server13 ~]# systemctl restart docker\t\t\u91cd\u542fdocker\n&#91;root@Server13 ~]# shutdown -h now\t\t\t\u521d\u59cb\u5316swarm\u96c6\u7fa4<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/113.45.254.23\/wp-content\/uploads\/2025\/06\/image-30.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"846\" height=\"392\" data-original=\"http:\/\/113.45.254.23\/wp-content\/uploads\/2025\/06\/image-30.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-1907\"  sizes=\"auto, (max-width: 846px) 100vw, 846px\" \/><\/div><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">\u4e94\u3001\u4fee\u6539\u6240\u6709\u8282\u70b9\u7684host\u6587\u4ef6<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;root@node01 ~]# vim \/etc\/hosts\n\n&#91;root@node02 ~]# vim \/etc\/hosts\n\n&#91;root@node03 ~]# vim \/etc\/hosts\n\n&#91;root@node04 ~]# vim \/etc\/hosts<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/113.45.254.23\/wp-content\/uploads\/2025\/06\/image-31-1024x619.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"619\" data-original=\"http:\/\/113.45.254.23\/wp-content\/uploads\/2025\/06\/image-31-1024x619.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-1908\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>192.168.7.10 node01.benet.com\n192.168.7.11 node02.benet.com\n192.168.7.12 node03.benet.com\n192.168.7.13 node04.benet.com<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;root@node01 ~]# docker swarm join-token manager\t\t\u67e5\u770b\u5de5\u4f5c\u8282\u70b9\u52a0\u5165swarm\u96c6\u7fa4\u7684\u547d\u4ee4\nTo add a manager to this swarm, run the following command:\n\n    docker swarm join --token SWMTKN-1-4hxebsjeyisyajtqm1ow8pp9p5rhlv9zs1paq32y78zmacp86m-72azhfad1z3n2rruvcj9s4ng3 192.168.7.10:2377     \nThis node joined a swarm as a manager.\t\u5c06\u65b0\u8282\u70b9\u52a0\u5165\u5230\u96c6\u7fa4\u4e2d\n&#91;root@node01 ~]#\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u516d\u3001node01\u3001node02\u3001node03\u3001node04\u8fdb\u884c\u65f6\u95f4\u540c\u6b65<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/113.45.254.23\/wp-content\/uploads\/2025\/06\/image-32-1024x591.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"591\" data-original=\"http:\/\/113.45.254.23\/wp-content\/uploads\/2025\/06\/image-32-1024x591.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-1909\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/113.45.254.23\/wp-content\/uploads\/2025\/06\/image-33-1024x644.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"644\" data-original=\"http:\/\/113.45.254.23\/wp-content\/uploads\/2025\/06\/image-33-1024x644.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-1910\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>#pool 2.rocky.pool.ntp.org iburst\npool ntp.aliyun.com iburst<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;root@node01 ~]# systemctl enable --now chronyd\n\n&#91;root@node01 ~]# chronyc sources -v\n\n&#91;root@node01 ~]# date\n\n2025\u5e74 06\u6708 10\u65e5 \u661f\u671f\u4e8c 14:35:25 CST\n\n&#91;root@node01 ~]# clock -w<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;root@node02 ~]# systemctl enable --now chronyd\n\n&#91;root@node02 ~]# chronyc sources -v\n\n&#91;root@node02 ~]# date\n\n2025\u5e74 06\u6708 10\u65e5 \u661f\u671f\u4e8c 14:35:25 CST\n\n&#91;root@node02 ~]# clock -w<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;root@node03 ~]# systemctl enable --now chronyd\n\n&#91;root@node03 ~]# chronyc sources -v\n\n&#91;root@node03 ~]# date\n\n2025\u5e74 06\u6708 10\u65e5 \u661f\u671f\u4e8c 14:35:25 CST\n\n&#91;root@node03 ~]# clock -w<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;root@node04 ~]# systemctl enable --now chronyd\n\n&#91;root@node04 ~]# chronyc sources -v\n\n&#91;root@node04 ~]# date\n\n2025\u5e74 06\u6708 10\u65e5 \u661f\u671f\u4e8c 14:35:25 CST\n\n&#91;root@node04 ~]# clock -w<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u4e03\u3001node1\u4e3b\u8282\u70b9\u5c06Docker\u6587\u4ef6\u7ed9node04\u8282\u70b9<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;root@node01 ~]# scp Dockerfile 192.168.7.13:\/root \u590d\u5236Docker\u6587\u4ef6\u7ed9node04\u8282\u70b9<\/code><\/pre>\n\n\n\n<p>[root@node01 ~]# ls<\/p>\n\n\n\n<p>anaconda-ks.cfg &nbsp;Dockerfile<\/p>\n\n\n\n<p>[root@node01 ~]# scp Dockerfile 192.168.7.13:\/root<\/p>\n\n\n\n<p>The authenticity of host &#8216;192.168.7.13 (192.168.7.13)&#8217;<\/p>\n\n\n\n<p>ED25519 key fingerprint is SHA256:H7LflkvVNKIcCNphIsXrJ<\/p>\n\n\n\n<p>This key is not known by any other names<\/p>\n\n\n\n<p>Are you sure you want to continue connecting (yes\/no\/[f<\/p>\n\n\n\n<p>Warning: Permanently added &#8216;192.168.7.13&#8217; (ED25519) to<\/p>\n\n\n\n<p>root@192.168.7.13&#8217;s password:<\/p>\n\n\n\n<p>Dockerfile<\/p>\n\n\n\n<p>[root@node01 ~]#<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u516b\u3001\u5728node04\u4e0a\u7f16\u8f91Dockerfile\u6587\u4ef6<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;root@node04 ~]# vim Dockerfile\n&#91;root@node04 ~]#\nFROM rockylinux:9.2\nMAINTAINER serverworld &lt;admin@srv.world>\nRUN yum -y install httpd\nRUN echo \"node04.benet.com\" > \/var\/www\/html\/index.html\nEXPOSE 80\nCMD &#91;\"-D\", \"FOREGROUND\"]\nENTRYPOINT &#91;\"\/usr\/sbin\/httpd\"]\n~\n~<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u4e5d\u3001docker\u4f7f\u7528dockerfile\u6587\u4ef6\u521b\u5efaweb_server\u7684\u955c\u50cf<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;root@node04 ~]# docker build -t web_server:latest .\t\tdocker\u4f7f\u7528dockerfile\u6587\u4ef6\u521b\u5efaweb_server\u7684\u955c\u50cf\n&#91;+] Building 13.8s (1\/2)                                                                          docker:default\n => &#91;internal] load build definition from Dockerfile                                                        0.0s\n => => transferring dockerfile: 246B                                                                        0.0s\n => WARN: MaintainerDeprecated: Maintainer instruction is deprecated in favor of using label (line 2)       0.0s\n => <\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;root@node04 ~]# docker swarm join --token SWMTKN-1-4hxebsjeyisyajtqm1ow8pp9p5rhlv9zs1paq32y78zmacp86m-72azhfad1z3n2rruvcj9s4ng3 192.168.7.10:2377  \u5c06\u65b0\u8282\u70b9\u52a0\u5165\u5230\u96c6\u7fa4\u4e2d\uff08\u4ecenode1\u590d\u5236\u8fc7\u6765\u7684\uff09\nError response from daemon: manager stopped: can't initialize raft node: rpc error: code = Unavailable desc = could not connect to prospective new cluster member using its advertised address: rpc error: code = Unavailable desc = connection error: desc = \"transport: Error while dialing: dial tcp 192.168.7.13:2377: connect: no route to host\"\n&#91;root@node04 ~]# systemctl status firewalld\n\u25cf firewalld.service - firewalld - dynamic firewall daemon\n     Loaded: loaded (\/usr\/lib\/systemd\/system\/firewalld.service; enabled; preset: enabled)\n     Active: active (running) since Tue 2025-06-10 22:07:12 CST; 38min ago\n       Docs: man:firewalld(1)\n   Main PID: 761 (firewalld)\n      Tasks: 2 (limit: 22925)\n     Memory: 45.3M\n        CPU: 744ms\n     CGroup: \/system.slice\/firewalld.service\n             \u2514\u2500761 \/usr\/bin\/python3 -s \/usr\/sbin\/firewalld --nofork --nopid\n\nJun 10 22:07:13 node04.benet.com firewalld&#91;761]: WARNING: COMMAND_FAILED: '\/usr\/sbin\/ip6tables -w10 -t filter -F>\nJun 10 22:07:13 node04.benet.com firewalld&#91;761]: WARNING: COMMAND_FAILED: '\/usr\/sbin\/ip6tables -w10 -t filter -X>\nJun 10 22:07:13 node04.benet.com firewalld&#91;761]: WARNING: COMMAND_FAILED: '\/usr\/sbin\/ip6tables -w10 -t filter -F>\nJun 10 22:07:13 node04.benet.com firewalld&#91;761]: WARNING: COMMAND_FAILED: '\/usr\/sbin\/ip6tables -w10 -t filter -X>\nJun 10 22:07:13 node04.benet.com firewalld&#91;761]: WARNING: COMMAND_FAILED: '\/usr\/sbin\/ip6tables -w10 -t filter -F>\nJun 10 22:07:13 node04.benet.com firewalld&#91;761]: WARNING: COMMAND_FAILED: '\/usr\/sbin\/ip6tables -w10 -t filter -X>\nJun 10 22:07:13 node04.benet.com firewalld&#91;761]: WARNING: COMMAND_FAILED: '\/usr\/sbin\/ip6tables -w10 -t filter -F>\nJun 10 22:07:13 node04.benet.com firewalld&#91;761]: WARNING: COMMAND_FAILED: '\/usr\/sbin\/ip6tables -w10 -t filter -X>\nJun 10 22:07:13 node04.benet.com firewalld&#91;761]: WARNING: COMMAND_FAILED: '\/usr\/sbin\/ip6tables -w10 -t filter -F>\nJun 10 22:07:13 node04.benet.com firewalld&#91;761]: WARNING: COMMAND_FAILED: '\/usr\/sbin\/ip6tables -w10 -t filter -X>\n\n&#91;root@node04 ~]# systemctl stop firewalld\n&#91;root@node04 ~]# docker swarm join --token SWMTKN-1-4hxebsjeyisyajtqm1ow8pp9p5rhlv9zs1paq32y78zmacp86m-72azhfad1z3n2rruvcj9s4ng3 192.168.7.10:2377\nThis node joined a swarm as a manager. \u5c06\u65b0\u8282\u70b9\u52a0\u5165\u5230\u96c6\u7fa4\u4e2d\n&#91;root@node04 ~]#\n&#91;root@node01 ~]# docker node ls \t\t\t\u5728\u4e3b\u8282\u70b9node01\u67e5\u770b\u96c6\u7fa4\u4fe1\u606f\nID                            HOSTNAME           STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION\ntagtz3l8wzcfldglq4ctn1vtk                        Unknown   Active                          \ntzief1hhk4knlk9ap5aags2rr *   node01.benet.com   Ready     Active         Leader           27.4.1\ni21ublrvu993qpj8ji2ryuc97     node02.benet.com   Ready     Active                          27.4.1\n3ppty8565te0g7f34byoyp7x8     node03.benet.com   Ready     Active                          28.2.2\n33ati9i1fayisxjjyjofckg6s     node04.benet.com   Ready     Active         Reachable        28.1.1\n\n\n&#91;root@node01 ~]# docker service scale swarm_cluster=4\t\u5c06swarm \u96c6\u7fa4\u8282\u70b9\u6269\u5c55\u81f34\u53f0\nswarm_cluster scaled to 4\noverall progress: 4 out of 4 tasks \n1\/4: running   \n2\/4: running   \n3\/4: running   \n4\/4: running   \nverify: Service swarm_cluster converged \n&#91;root@node01 ~]# docker service ps swarm_cluster\t\u67e5\u770b\u6b63\u5728\u8fd0\u884c\u7684\u96c6\u7fa4\uff08\u662f\u5426\u4e3a4\u53f0\uff09\nID             NAME              IMAGE               NODE               DESIRED STATE   CURRENT STATE                    ERROR     PORTS\nc79c0t65bkif   swarm_cluster.1   web_server:latest   node01.benet.com   Running         Running less than a second ago             \nrg5ygj87yz1w   swarm_cluster.2   web_server:latest   node02.benet.com   Running         Running less than a second ago             \ngn3nygv9kooi   swarm_cluster.3   web_server:latest   node03.benet.com   Running         Running less than a second ago             \npwiltd0ke24w   swarm_cluster.4   web_server:latest   node04.benet.com   Running         Running about a minute ago                 \n&#91;root@node01 ~]# curl 192.168.7.10\t\t\u8bbf\u95ee\u4e3b\u8282\u70b9IP\nnode01.benet.com\n&#91;root@node01 ~]# curl 192.168.7.10              \u91c7\u7528\u8f6e\u8be2\nnode02.benet.com\n&#91;root@node01 ~]# curl 192.168.7.10              \u91c7\u7528\u8f6e\u8be2\nnode04.benet.com\n&#91;root@node01 ~]# curl 192.168.7.10              \u91c7\u7528\u8f6e\u8be2\nnode03.benet.com<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u5341\u3001\u5220\u9664\u8282\u70b9\u548c\u96c6\u7fa4<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;root@node01 ~]# docker node update --availability drain i21ublrvu993qpj8ji2ryuc97\t\t\u5c06\u8be5\u8282\u70b9\u505c\u7528\ni21ublrvu993qpj8ji2ryuc97\n&#91;root@node01 ~]# docker swarm leave\t\t\u79bb\u5f00\u8282\u70b9\n&#91;root@node01 ~]# \n\n&#91;root@node01 ~]# docker node rm 6whtoqrhkzv3ax4xy9ab20gmy   \u5220\u9664 node\u8282\u70b9\uff08\u5728 master \u4e0a\u64cd\u4f5c\uff09\n\u6dfb\u52a0\u5220\u9664\u8282\u70b9\n&#91;root@node01 ~]# docker swarm init\t\t\u521d\u59cb\u5316swarm\u96c6\u7fa4\nSwarm initialized: current node (bvp2xk3ju7wh9bff5kar63rrp) is now a manager.\n\nTo add a worker to this swarm, run the following command:\n\n    docker swarm join --token SWMTKN-1-247tqn51drak1zu683haeunra0mqbgidg1xad0l4sjqszbmao7-bda3i3e1ivl1awsbxh3xbfp9k 192.168.7.10:2377\n\nTo add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.\n<\/code><\/pre>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u4e00\u3001\u5b9e\u9a8c\u73af\u5883\uff1a \u8fd8\u539f\u65b0\u7cfb\u7edf\u540e\uff0c\u521b\u5efa3\u53f0docker\uff0c\u5f00\u673a\u3002 \u4e8c\u3001\u4fee\u6539\u4e09\u53f0\u8282\u70b9\u7684host\u6587\u4ef6\u3001\u4fee\u6539\u4e09\u53f0\u8282\u70b9\u540d\u79f0\uff1a [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[141],"tags":[145,146],"class_list":["post-1899","post","type-post","status-publish","format-standard","hentry","category-docker","tag-dcoker-swarm","tag-146"],"_links":{"self":[{"href":"http:\/\/113.45.254.23\/index.php?rest_route=\/wp\/v2\/posts\/1899","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/113.45.254.23\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/113.45.254.23\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/113.45.254.23\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/113.45.254.23\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1899"}],"version-history":[{"count":2,"href":"http:\/\/113.45.254.23\/index.php?rest_route=\/wp\/v2\/posts\/1899\/revisions"}],"predecessor-version":[{"id":1912,"href":"http:\/\/113.45.254.23\/index.php?rest_route=\/wp\/v2\/posts\/1899\/revisions\/1912"}],"wp:attachment":[{"href":"http:\/\/113.45.254.23\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1899"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/113.45.254.23\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1899"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/113.45.254.23\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1899"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}