docker数据卷,单机集群,集群,滚动更新

本文详细介绍了Docker中数据卷的使用方法,包括数据卷的创建、挂载、共享和持久化策略,以及如何通过数据卷容器实现数据共享。此外,还深入探讨了Docker集群的搭建过程,包括Swarm模式的初始化、节点加入、服务创建、伸缩与更新,以及监控软件的部署。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在Docker的使用过程中往往需要对数据进行持久化,或者需要在多个容器之间进行数据共享,所以这就涉及到Docker容器的数据操作。
容器中数据管理主要有两种方式:数据卷和数据卷容器。

数据卷(Data Volumes) 容器内数据直接映射到本地宿主机。
数据卷容器(Data Volume Containers) 使用特定容器维护数据卷。

数据卷

数据卷是一个特殊的目录,它将主机目录直接映射进容器。可供一个或多个容器使用。

数据卷设计的目的就是为了 数据的持久化,它完全独立与容器的生命周期。因此,容器删除时,不会删除其挂载的数据卷,也不会存在类似的垃圾机制对容器存在的数据卷进行处理。

数据卷的特性:

数据卷在容器启动时初始化,如果容器使用的镜像在挂载点包含了数据,这些数据会拷贝到新初始化的数据卷中
数据卷可以在容器之间共享和重用
可以对数据卷里的内容直接修改,修改回马上生效,无论是容器内操作还是本地操作
对数据卷的更新不会影响镜像的更新
数据卷会一直存在,即使挂载数据卷的容器已经被删除

docker run 在创建容器时使用 -v 参数可以挂载一个或多个数据卷到当前运行的容器中,-v
的作用是将宿主机上的目录作为容器的数据卷挂载到容器中,使宿主机和容器之间可以共
享一个目录。

[root@foundation53 ~]# systemctl start docker.service 
查看数据卷
[root@foundation53 ~]# docker volume ls
DRIVER              VOLUME NAME
local               17ba776e0ba1c45a61669d5db9bb3c0e40700d8ba27c5d1ecf56fdc7364b7a00
[root@foundation53 ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                            NAMES
86feeeeced0d        registry:2.3.1      "/bin/registry /et..."   15 hours ago        Up About a minute   0.0.0.0:443->443/tcp, 5000/tcp   registry
[root@foundation53 ~]# docker rm -f registry
registry
创建容器时使用 -v 参数可以挂载一个或多个数据卷到当前运行的容器中
[root@foundation53 ~]# docker run -it --name vm1 -v /data1 ubuntu
[root@foundation53 ~]# docker inspect vm1
数据卷的目录如下
[root@foundation53 ~]# docker inspect vm1 | grep vol
                "Type": "volume",
                "Source": "/var/lib/docker/volumes/e2424e1454ad0d71d99edd26a097bf5c0d1a28f5b2eb5c5bb337c3936b2e360c/_data",
[root@foundation53 ~]# cd /var/lib/docker/volumes/e2424e1454ad0d71d99edd26a097bf5c0d1a28f5b2eb5c5bb337c3936b2e360c/_data
[root@foundation53 _data]# ls

这里写图片描述
数据卷就是一个目录,可以正常写入删除数据,文件
可以对数据卷里的内容直接修改,修改会马上生效,无论是容器内操作还是本地操作

[root@foundation53 _data]# cp /etc/passwd .
[root@foundation53 _data]# ls
passwd
[root@foundation53 _data]# pwd
/var/lib/docker/volumes/e2424e1454ad0d71d99edd26a097bf5c0d1a28f5b2eb5c5bb337c3936b2e360c/_data

这里写图片描述

数据卷在容器启动时初始化,如果容器使用的镜像在挂载点包含了数据,这些数据会拷贝到新初始化的数据卷中
[root@foundation53 ~]# docker run -d --name vm2 -v /usr/share/nginx/html nginx
a7074fbf70eeb6117995e8d04366db5edce8430ffa2b9c37ce7183e475b9817d
[root@foundation53 ~]# docker inspect vm2 | grep vol                "Type": "volume",
                "Source": "/var/lib/docker/volumes/8510f33f7902c04c1bd7f68c3802c87a5a274cac8c73e439f3b8d9540c913e7b/_data",
[root@foundation53 ~]# cd /var/lib/docker/volumes/8510f33f7902c04c1bd7f68c3802c87a5a274cac8c73e439f3b8d9540c913e7b/_data
[root@foundation53 _data]# ls
50x.html  index.html

这里写图片描述

数据卷会一直存在,即使挂载数据卷的容器已经被删除
需要删除残存的数据卷时,可以用docker volume rm 命令
需要删除容器及它的数据卷时,需要加-v选项

[root@foundation53 ~]# docker stop vm2
vm2
[root@foundation53 ~]# docker rm vm2
vm2
[root@foundation53 ~]# docker volume rm 8510f33f7902c04c1bd7f68c3802c87a5a274cac8c73e439f3b8d9540c913e7b
8510f33f7902c04c1bd7f68c3802c87a5a274cac8c73e439f3b8d9540c913e7b
[root@foundation53 ~]# docker stop vm1
vm1
[root@foundation53 ~]# docker rm -v vm1
vm1

这里写图片描述

数据卷的介绍就到此为止,我们接下来看下封装
先将不需要的容器及数据卷删除,纯净实验环境

[root@foundation53 ~]# docker volume ls
DRIVER              VOLUME NAME
local               17ba776e0ba1c45a61669d5db9bb3c0e40700d8ba27c5d1ecf56fdc7364b7a00
[root@foundation53 ~]# docker volume ls -q
17ba776e0ba1c45a61669d5db9bb3c0e40700d8ba27c5d1ecf56fdc7364b7a00
[root@foundation53 ~]# docker volume rm `docker volume ls -q`
17ba776e0ba1c45a61669d5db9bb3c0e40700d8ba27c5d1ecf56fdc7364b7a00
[root@foundation53 ~]# docker volume ls
DRIVER              VOLUME NAME
[root@foundation53 ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

这里写图片描述

封装

我们封装一个带发布页的nginx

[root@foundation53 ~]# cd /tmp/docker/
[root@foundation53 docker]# ls
certs  Dockerfile  dvd.repo  ssh  supervisord.conf  test  web
[root@foundation53 docker]# cd test/
[root@foundation53 test]# vim Dockerfile 
[root@foundation53 test]# cat Dockerfile 
FROM rhel7
ADD html.tar /usr/share
VOLUME ["/usr/share/nginx/html"]

这里写图片描述

[root@foundation53 test]# mkdir nginx
[root@foundation53 test]# cd nginx/
[root@foundation53 nginx]# mkdir html
[root@foundation53 nginx]# cd html/
[root@foundation53 html]# vim index.html
[root@foundation53 html]# cd ..
[root@foundation53 nginx]# cd ..
[root@foundation53 test]# tar cf html.tar nginx/html/index.html 
[root@foundation53 test]# ls
Dockerfile  html.tar  nginx

这里写图片描述
[root@foundation53 test]# docker build -t rhel7:v4 .
这里写图片描述

[root@foundation53 test]# docker create --name vol rhel7:v4 bash

[root@foundation53 test]# docker run -d --name vm1 --volumes-from vol nginx
d865d873cf004168cf5438945e2d143b356f879c5a9256624cb9bc2ec897130d
[root@foundation53 test]# docker inspect vm1 |grep IPAddress
            "SecondaryIPAddresses": null,
            "IPAddress": "172.17.0.2",
                    "IPAddress": "172.17.0.2",
[root@foundation53 test]# curl 172.17.0.2
<h1>www.westos.org</h1>
<h1>www.westos.org</h1>
<h1>www.westos.org</h1>
<h1>www.westos.org</h1>
<h1>www.westos.org</h1>
<h1>www.westos.org</h1>

这里写图片描述

纯净环境

[root@foundation53 docker]# ls
certs  Dockerfile  dvd.repo  ssh  supervisord.conf  test  web
[root@foundation53 docker]# mkdir auth
[root@foundation53 docker]# cd auth/
[root@foundation53 auth]# cd ..
[root@foundation53 docker]# ls
auth  certs  Dockerfile  dvd.repo  ssh  supervisord.conf  test  web
[root@foundation53 docker]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
d865d873cf00        nginx               "nginx -g 'daemon ..."   14 minutes ago      Up 14 minutes       80/tcp, 443/tcp     vm1
[root@foundation53 docker]# docker ps rm -f -v vm1
invalid argument "-v" for f: bad format of filter (expected name=value)
See 'docker ps --help'.
[root@foundation53 docker]# docker  rm -f -v vm1
vm1
[root@foundation53 docker]# docker volume ls
DRIVER              VOLUME NAME
local               44700621a3c32165191668d78029231ef85ee9d6e92aeb3e9acc55287a95335d
[root@foundation53 docker]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                    PORTS               NAMES
adeefe420c25        rhel7:v4            "bash"                   25 minutes ago      Created                                       vol
da02f32c4f9b        registry:2.3.1      "/bin/registry /et..."   18 hours ago        Exited (2) 17 hours ago                       elastic_swanson
[root@foundation53 docker]# docker rm -v vol
vol
[root@foundation53 docker]# docker volume ls
DRIVER              VOLUME NAME
[root@foundation53 docker]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                    PORTS               NAMES
da02f32c4f9b        registry:2.3.1      "/bin/registry /et..."   18 hours ago        Exited (2) 17 hours ago                       elastic_swanson
[root@foundation53 docker]# docker ps -aq
da02f32c4f9b
[root@foundation53 docker]# docker rm -f da02f32c4f9b
da02f32c4f9b
[root@foundation53 docker]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
[root@foundation53 docker]# docker run --entrypoint htpasswd registry:2.3.1 -Bbn ha westos > auth/htpasswd
[root@foundation53 docker]# cat auth/htpasswd 
ha:$2y$05$pkmA/avPh3eStnJMteCfxugja3Bt7naD4rfko4VoESBBEzkh2Bzsm

[root@foundation53 docker]# docker run --entrypoint htpasswd registry:2.3.1 -Bbn admin westos >> auth/htpasswd
[root@foundation53 docker]# cat auth/htpasswd ha:$2y$05$pkmA/avPh3eStnJMteCfxugja3Bt7naD4rfko4VoESBBEzkh2Bzsm

admin:$2y$05$XXOjz5krQNtFlnygsUoBh.BW9Z2U77lKrDrUMGEHVAbgJfXlaGp4K

这里写图片描述

[root@foundation53 docker]# htpasswd -cm htpaswd ha
New password: 
Re-type new password: 
Adding password for user ha
[root@foundation53 docker]# 
[root@foundation53 docker]# ls
auth  certs  Dockerfile  dvd.repo  htpaswd  ssh  supervisord.conf  test  web
[root@foundation53 docker]# cat htpaswd 
ha:$apr1$EI6SkU6l$VEge5AwyYLPW.oACY9mYC/
[root@foundation53 docker]# htpasswd -m htpaswd admin
New password: 
Re-type new password: 
Adding password for user admin
[root@foundation53 docker]# cat htpaswd 
ha:$apr1$EI6SkU6l$VEge5AwyYLPW.oACY9mYC/
admin:$apr1$Oj/aaZIS$qdhQn.szDzWmhSHRgw4Em0

这里写图片描述

[root@foundation53 docker]# docker run -d    --restart=always    --name registry    -v `pwd`/certs:/certs    -e REGISTRY_HTTP_ADDR=0.0.0.0:443    -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt    -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key  -v `pwd`/auth:/auth -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm"  -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd  -p 443:443    registry:2.3.1 
c66e738886cad85f5c8666d93f8bcd1fe36ef69ee52e13b4c9a47ce0e8917b59
[root@foundation53 docker]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                            NAMES
c66e738886ca        registry:2.3.1      "/bin/registry /et..."   6 seconds ago       Up 5 seconds        0.0.0.0:443->443/tcp, 5000/tcp   registry

这里写图片描述

上传镜像,由于没有证书,所以无法上传

[root@foundation53 docker]# docker tag nginx westos.org/nginx
[root@foundation53 docker]# docker push westos.org/nginx
The push refers to a repository [westos.org/nginx]
5f70bf18a086: Preparing 
3f3324023e75: Preparing 
f0d7d68f89e5: Preparing 
917c0fc99b35: Preparing 
no basic auth credentials

这里写图片描述

给网站登陆证书及密码

[root@foundation53 docker]# docker login -u ha -p westos westos.org
Login Succeeded
[root@foundation53 docker]# ping westos.org 
PING server1 (172.25.254.53) 56(84) bytes of data.
64 bytes from westos.org (172.25.254.53): icmp_seq=1 ttl=64 time=0.039 ms
64 bytes from westos.org (172.25.254.53): icmp_seq=2 ttl=64 time=0.074 ms
64 bytes from westos.org (172.25.254.53): icmp_seq=3 ttl=64 time=0.076 ms
64 bytes from westos.org (172.25.254.53): icmp_seq=4 ttl=64 time=0.074 ms
^C64 bytes from westos.org (172.25.254.53): icmp_seq=5 ttl=64 time=0.065 ms
64 bytes from westos.org (172.25.254.53): icmp_seq=6 ttl=64 time=0.072 ms
^C
--- server1 ping statistics ---
6 packets transmitted, 6 received, 0% packet loss, time 4999ms
rtt min/avg/max/mdev = 0.039/0.066/0.076/0.015 ms

这里写图片描述

[root@foundation53 docker]# netstat -antlp |grep :443
tcp6       0      0 :::443                  :::*                    LISTEN      7711/docker-proxy   




[root@foundation53 docker]# cd 
[root@foundation53 ~]# cd .docker/
[root@foundation53 .docker]# ls
config.json
[root@foundation53 .docker]# cat config.json 
{
    "auths": {
        "westos.org": {
            "auth": "aGE6d2VzdG9z"
        }
    }
}
[root@foundation53 .docker]# docker push westos.org/nginx
The push refers to a repository [westos.org/nginx]
5f70bf18a086: Pushed 
3f3324023e75: Pushed 
f0d7d68f89e5: Pushed 
917c0fc99b35: Pushed 
latest: digest: sha256:e59bbe13ca0c309644d9bca972c1b660c170fbdee7ff81eda9ff966b86f14e63 size: 1978

这里写图片描述

Docker搭建nginx,haproxy,apache集群

首先纯净实验环境
这里写图片描述

下面,我们创建一个经典的 Web 项目:一个 Haproxy,挂载三个 Web 容器。
创建一个 compose-haproxy-web 目录,作为项目工作目录,并在其中分别创建两个子目
录:haproxy 和 web。
Web 子目录
这里用 Python 程序来提供一个简单的 HTTP 服务,打印出访问者的 IP 和 实际的本地
IP。


[root@foundation53 docker]# ls
auth  certs  Dockerfile  dvd.repo  htpaswd  ssh  supervisord.conf  test  web
[root@foundation53 docker]# mkdir compose
[root@foundation53 docker]# cd compose/
[root@foundation53 compose]# pwd
/tmp/docker/compose
[root@foundation53 compose]# vim docker-compose.yml
apache:
    image: rhel7:v1
    expose:
        - 80
    volumes:
        - ./web:/var/www/html

nginx:
    image: nginx
    expose:
        - 80

haproxy:
    image: haproxy
    volumes:
        - ./haproxy:/usr/local/etc/haproxy
    links:
        - apache
        - nginx
    ports:
        - "8080:80"
    expose:
        - 80

这里写图片描述

[root@foundation53 compose]# cd ..
[root@foundation53 docker]# ls
auth   compose     dvd.repo  ssh               test
certs  Dockerfile  htpaswd   supervisord.conf  web
[root@foundation53 docker]# cp -r web/ compose/
[root@foundation53 docker]# cd compose/
[root@foundation53 compose]# ls
docker-compose.yml  web
[root@foundation53 compose]# ls web/
index.html
[root@foundation53 compose]# mkdir haproxy
[root@foundation53 compose]# cd haproxy/
[root@foundation53 haproxy]# vim haproxy.cfg
[root@foundation53 haproxy]# cat haproxy.cfg 
global
    log 127.0.0.1 local0
    log 127.0.0.1 local1 notice
defaults
    log global
    mode http
    option httplog
    option dontlognull
    timeout connect 5000ms
    timeout client 50000ms
    timeout server 50000ms
    stats uri /status
frontend balancer
    bind 0.0.0.0:80
    default_backend web_backends
backend web_backends
    balance roundrobin
    server web1 apache:80 check
    server web2 nginx:80 check

这里写图片描述

安装 docker-compose-Linux-x86_64-1.22.0,这是个二进制文件包,下载即可用


[root@foundation53 ~]# cd /usr/local/bin/
[root@foundation53 bin]# ls
docker-compose-Linux-x86_64-1.22.0  rht-vmctl  rht-vmicons  rht-vmsetkeyboard
[root@foundation53 bin]# chmod +x docker-compose-Linux-x86_64-1.22.0 

为了方便版本更新,我们作软链接
[root@foundation53 bin]# ln -s docker-compose-Linux-x86_64-1.22.0 docker-compose

这里写图片描述

[root@foundation53 docker]# docker load -i haproxy.tar
启动集群
[root@foundation53 compose]# docker-compose up

compose_nginx_1 is up-to-date
Creating compose_apache_1 ... done
Creating compose_haproxy_1 ... done
Attaching to compose_nginx_1, compose_apache_1, compose_haproxy_1
haproxy_1  | <7>haproxy-systemd-wrapper: executing /usr/local/sbin/haproxy -p /run/haproxy.pid -f /usr/local/etc/haproxy/haproxy.cfg -Ds 
apache_1   | AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.3. Set the 'ServerName' directive globally to suppress this message

这里写图片描述

打开浏览器
这里写图片描述
这里写图片描述
查看监控
这里写图片描述

浏览端访问的数据会被记录
这里写图片描述
关闭apache

这里写图片描述

监控显示web1离线

这里写图片描述

打开apache
[root@foundation53 compose]# docker start compose_apache_1
compose_apache_1

监控显示正常

这里写图片描述

开三个新的虚拟机,做集群
都安装docker并打开
[root@docker1 ~]# ls
anaconda-ks.cfg
docker-engine-17.03.1.ce-1.el7.centos.x86_64.rpm
docker-engine-selinux-17.03.1.ce-1.el7.centos.noarch.rpm
[root@docker1 ~]# yum install -y *
[root@docker1 ~]# systemctl start docker

这个软件是为了命令补全
[root@docker1 ~]# yum install -y bash-*
创建集群
[root@docker1 ~]# docker swarm init
Swarm initialized: current node (r05cs00orzmzwdeon70qb78iz) is now a manager.

To add a worker to this swarm, run the following command:

    docker swarm join \
    --token SWMTKN-1-65uct5jlw9jf8asgasw9rc1c4ixr6fj4p8r40bjwmfdggfdnmd-dmtbv9x1qxucq6ypjompuloe4 \
    172.25.53.1:2377

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

这里写图片描述

其他两个加入集群

[root@docker3 ~]#     docker swarm join \
>     --token SWMTKN-1-65uct5jlw9jf8asgasw9rc1c4ixr6fj4p8r40bjwmfdggfdnmd-dmtbv9x1qxucq6ypjompuloe4 \
>     172.25.53.1:2377
This node joined a swarm as a worker.

这里写图片描述
这里写图片描述

虚拟机无法联网,所以我们将私有软件仓库使用

三台虚拟机做解析
172.25.53.250 westos.org

把证书传给三台虚拟机

这里写图片描述


虚拟机可以下载仓库里的软件了
前提是上传了的,三台虚拟机都拉取nginx
docker pull westos.org/nginx
[root@docker1 ~]# docker service create --name nginx --publish 80:80 --replicas 3 westos.org/nginx
s5bcl3q3ydjzr63qvjmtd24jn
[root@docker1 ~]# docker service ps nginx 
ID            NAME     IMAGE                    NODE     DESIRED STATE  CURRENT STATE           ERROR  PORTS
z180cfqtojp4  nginx.1  westos.org/nginx:latest  docker3  Running        Running 9 seconds ago          
z9av42sz5xkn  nginx.2  westos.org/nginx:latest  docker1  Running        Running 10 seconds ago         
5gkghv840zsj  nginx.3  westos.org/nginx:latest  docker2  Running        Running 10 seconds ago      

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
对容器可进行拉申与缩减


[root@docker1 ~]# docker images 
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
westos.org/nginx    latest              af4b3d7d5401        2 years ago         190 MB
[root@docker1 ~]# docker ps
CONTAINER ID        IMAGE                                                                                      COMMAND                  CREATED             STATUS              PORTS               NAMES
feb6472f1ed1        westos.org/nginx@sha256:e59bbe13ca0c309644d9bca972c1b660c170fbdee7ff81eda9ff966b86f14e63   "nginx -g 'daemon ..."   41 seconds ago      Up 38 seconds       80/tcp, 443/tcp     nginx.2.z9av42sz5xkn3gw8lgea0dho3
[root@docker1 ~]# docker service scale nginx=6
nginx scaled to 6
[root@docker1 ~]# docker service ps nginx 
ID            NAME     IMAGE                    NODE     DESIRED STATE  CURRENT STATE                   ERROR  PORTS
z180cfqtojp4  nginx.1  westos.org/nginx:latest  docker3  Running        Running about a minute ago             
z9av42sz5xkn  nginx.2  westos.org/nginx:latest  docker1  Running        Running about a minute ago             
5gkghv840zsj  nginx.3  westos.org/nginx:latest  docker2  Running        Running about a minute ago             
ta0c0ugzwpz4  nginx.4  westos.org/nginx:latest  docker2  Running        Running less than a second ago         
n6vigkiirsl5  nginx.5  westos.org/nginx:latest  docker3  Running        Starting 1 second ago                  
44vxbdc3r90q  nginx.6  westos.org/nginx:latest  docker1  Running        Starting 1 second ago                  

这里写图片描述

上传监控软件
[root@foundation53 docker]# ls
certs.d  deamon.json  key.json  visualizer.tar
[root@foundation53 docker]# docker load -i visualizer.tar 
[root@foundation53 docker]# docker push westos.org/visualizer



[root@docker1 ~]# docker pull westos.org/visualizer

[root@docker1 ~]# docker service create --name=viz --publish=8080:8080/tcp --constraint=node.role==manager --mount=type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock westos.org/visualizer
1p7qgtzpkuksdwzm76tuw0z78

这里写图片描述

[root@docker1 ~]# docker service ls
ID            NAME   MODE        REPLICAS  IMAGE
1p7qgtzpkuks  viz    replicated  1/1       westos.org/visualizer:latest
s5bcl3q3ydjz  nginx  replicated  6/6       westos.org/nginx:latest
[root@docker1 ~]# docker service scale nginx=3
nginx scaled to 3

这里写图片描述

三台虚拟机都写发布页,并且传给仓库
这里写图片描述

[root@docker1 ~]# vim index.html
[root@docker1 ~]# docker container cp index.html nginx.2.z9av42sz5xkn3gw8lgea0dho3:/usr/share/nginx/html

这里写图片描述
这里写图片描述
这里写图片描述
关掉docker3,有一段时间后,会变为如下
这里写图片描述
这里写图片描述

打开docker3,但监控显示docker3并不会主动加入集群
这里写图片描述

滚动更新

[root@docker1 ~]# docker service  ps nginx
ID            NAME         IMAGE                    NODE     DESIRED STATE  CURRENT STATE              ERROR  PORTS
t89pb3adjhjq  nginx.1      westos.org/nginx:latest  docker2  Running        Running 31 minutes ago            
z180cfqtojp4   \_ nginx.1  westos.org/nginx:latest  docker3  Shutdown       Shutdown 31 minutes ago           
z9av42sz5xkn  nginx.2      westos.org/nginx:latest  docker1  Running        Running about an hour ago         
ta0c0ugzwpz4  nginx.4      westos.org/nginx:latest  docker2  Running        Running about an hour ago         
为了看效果,我们将nginx拉申为30个
[root@docker1 ~]# docker service scale nginx=30
nginx scaled to 30


软件仓库上传game2048
[root@foundation53 docker]# docker tag game2048 westos.org/game2048
[root@foundation53 docker]# docker push westos.org/game2048

这里写图片描述

滚动更新
[root@docker1 ~]# docker service update --image westos.org/game2048 --update-parallelism 5 --update-delay 10s nginx
nginx

注意看红色的,正在更新

这里写图片描述

更新完后
这里写图片描述

显示所有的都已经更新完成

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值