Docker Swarm 服务版本更新与回滚

摘要:
DockerSwarm服务版本更新环境:系统:Centos7.4x64应用程序版本:Docker18.09.0管理节点:192.168.1.79工作节点:192.168.1.76工作节点:168.1771管理节点:创建服务设置更新策略dockerservicecreate--replicas3--nameredis--update-delay10s--update-paralelisim2

Docker Swarm 服务版本更新

环境:

  • 系统:Centos 7.4 x64
  • 应用版本:Docker 18.09.0
  • 管理节点:192.168.1.79
  • 工作节点:192.168.1.78
  • 工作节点:192.168.1.77

1、管理节点:创建服务设置更新策略

docker service create 
--replicas 3 
--name redis 
--update-delay 10s 
--update-parallelism 2 
--update-failure-action continue 
redis:3.0.6
Docker Swarm 服务版本更新与回滚第1张Docker Swarm 服务版本更新与回滚第2张
# 创建命令
docker service create 
# 副本数
--replicas 3 
# 服务名
--name redis 
# 设定容器间更新时间间隔
--update-delay 10s 
# 更新时同时并行更新数量,默认1
--update-parallelism 2 
# 任务容器更新失败时的模式 continue为继续使用
--update-failure-action continue 
# 镜像
redis:3.0.6
命令解析
Docker Swarm 服务版本更新与回滚第1张Docker Swarm 服务版本更新与回滚第4张
命令:docker service ls
ID            NAME   MODE        REPLICAS  IMAGE
v76p9bl941bk  redis  replicated  3/3       redis:3.0.6
查看添加服务
Docker Swarm 服务版本更新与回滚第1张Docker Swarm 服务版本更新与回滚第6张
命令:docker service ps redis
ID            NAME     IMAGE        NODE     DESIRED STATE  CURRENT STATE          ERROR  PORTS
2pruajw13gud  redis.1  redis:3.0.6  slave02  Running        Running 4 minutes ago         
ma8ait8xcagl  redis.2  redis:3.0.6  slave02  Running        Running 4 minutes ago         
igpwcuyumwzu  redis.3  redis:3.0.6  slave01  Running        Running 5 minutes ago
查看启动情况

2、管理节点:手动更新服务版本

docker service update --image redis:3.0.7 redis
Docker Swarm 服务版本更新与回滚第1张Docker Swarm 服务版本更新与回滚第8张
命令:docker service ps redis
ID            NAME         IMAGE        NODE     DESIRED STATE  CURRENT STATE           ERROR  PORTS
tio9f89x7fzk  redis.1      redis:3.0.7  slave02  Running        Running 2 minutes ago          
2pruajw13gud   \_ redis.1  redis:3.0.6  slave02  Shutdown       Shutdown 2 minutes ago         
e3fuv9fm202x  redis.2      redis:3.0.7  slave01  Running        Running 2 minutes ago          
ma8ait8xcagl   \_ redis.2  redis:3.0.6  slave02  Shutdown       Shutdown 2 minutes ago         
zku5h3h4dqkn  redis.3      redis:3.0.7  slave01  Running        Running 2 minutes ago          
igpwcuyumwzu   \_ redis.3  redis:3.0.6  slave01  Shutdown       Shutdown 3 minutes ago
查看更新情况
Docker Swarm 服务版本更新与回滚第1张Docker Swarm 服务版本更新与回滚第10张
docker service inspect redis
[
    {
        "ID": "v76p9bl941bk87pwwk3nvtwfe",
        "Version": {
            "Index": 1479
        },
        "CreatedAt": "2018-11-07T06:19:23.210686656Z",
        "UpdatedAt": "2018-11-07T06:30:53.565888582Z",
        "Spec": {
             # 服务名称
            "Name": "redis",
            "TaskTemplate": {
                "ContainerSpec": {
                    # 服务镜像
                    "Image": "redis:3.0.7@sha256:730b765df9fe96af414da64a2b67f3a5f70b8fd13a31e5096fee4807ed802e20",
                    "DNSConfig": {}
                },
                "Resources": {
                    "Limits": {},
                    "Reservations": {}
                },
                "RestartPolicy": {
                    "Condition": "any",
                    "MaxAttempts": 0
                },
                "Placement": {},
                "ForceUpdate": 0
            },
            "Mode": {
                # 模式
                "Replicated": {
                     # 副本数
                    "Replicas": 3
                }
            },
             # 服务更新时应用策略
            "UpdateConfig": {
                # 同时更新任务数
                "Parallelism": 1,
                 # 更新间隔时间
                "Delay": 10000000000,
                # 更新失败后动作 pause暂停
                "FailureAction": "pause",
                # 更新失败后继续运行半分比
                "MaxFailureRatio": 0
            },
            "EndpointSpec": {
                # 默认分配1个虚拟IP
                "Mode": "vip"
            }
        },
        "PreviousSpec": {
            "Name": "redis",
            "TaskTemplate": {
                "ContainerSpec": {
                    "Image": "redis:3.0.6@sha256:6a692a76c2081888b589e26e6ec835743119fe453d67ecf03df7de5b73d69842",
                    "DNSConfig": {}
                },
                "Resources": {
                    "Limits": {},
                    "Reservations": {}
                },
                "RestartPolicy": {
                    "Condition": "any",
                    "MaxAttempts": 0
                },
                "Placement": {},
                "ForceUpdate": 0
            },
            "Mode": {
                "Replicated": {
                    "Replicas": 3
                }
            },
            "UpdateConfig": {
                "Parallelism": 1,
                "Delay": 10000000000,
                "FailureAction": "pause",
                "MaxFailureRatio": 0
            },
            "EndpointSpec": {
                "Mode": "vip"
            }
        },
        "Endpoint": {
            "Spec": {}
        },
        "UpdateStatus": {
            "State": "completed",
            "StartedAt": "2018-11-07T06:29:00.44192283Z",
            "CompletedAt": "2018-11-07T06:30:53.56587273Z",
            "Message": "update completed"
        }
    }
]
查看服务详细信息

注:升级过程,按顺序停止一个容器任务去对这个停止的任务进行更新,最后更新为running状态,再继续往下更新其他容器任务,如果更新失败它会暂停更新,切换到下一个容器任务继续更新直到所有容器。


Docker Swarm 服务版本回滚

1、管理节点:创建服务时设定回滚策略

docker service create 
--name my_web 
--replicas 10 
--rollback-parallelism 2 
--rollback-monitor 20s 
--rollback-max-failure-ratio .2 
nginx:1.12
Docker Swarm 服务版本更新与回滚第1张Docker Swarm 服务版本更新与回滚第12张
# 创建服务
docker service create 
# 服务名
--name my_web 
# 副本数
--replicas 10 
# 同时执行回滚数动作
--rollback-parallelism 2 
#  每次容器与容器之间的回滚时间间隔
--rollback-monitor 20s 
# 回滚故障率如果小于百分比允许运行
--rollback-max-failure-ratio .2 
# 使用镜像
nginx:1.12
命令解析
Docker Swarm 服务版本更新与回滚第1张Docker Swarm 服务版本更新与回滚第14张
命令:docker service ps -f "DESIRED-STATE=running" my_web
ID                  NAME                IMAGE               NODE                DESIRED STATE       CURRENT STATE                ERROR               PORTS
bgqpm1s0a24l        my_web.1            nginx:1.12          slave01             Running             Running about a minute ago                       
jttvdgzpiz02        my_web.2            nginx:1.12          slave01             Running             Running about a minute ago                       
t8yqfrzoa7fj        my_web.3            nginx:1.12          slave02             Running             Running about a minute ago                       
xgh712gi2eld        my_web.4            nginx:1.12          slave02             Running             Running about a minute ago                       
2tnw3tnofyn5        my_web.5            nginx:1.12          slave01             Running             Running about a minute ago                       
on4khcpkb2h7        my_web.6            nginx:1.12          slave02             Running             Running about a minute ago                       
gxdeqfbmq60k        my_web.7            nginx:1.12          slave01             Running             Running about a minute ago                       
kmyz0btgb0hk        my_web.8            nginx:1.12          slave02             Running             Running about a minute ago                       
lso2ry7f2v0o        my_web.9            nginx:1.12          slave01             Running             Running 2 minutes ago                            
ee21b2ud0mkk        my_web.10           nginx:1.12          slave02             Running             Running about a minute ago      
查看创建服务

2、管理节点:更新服务提升一个版本

docker service update --image nginx:1.13 my_web
Docker Swarm 服务版本更新与回滚第1张Docker Swarm 服务版本更新与回滚第16张
docker service ps -f "DESIRED-STATE=running" my_web
ID                  NAME                IMAGE               NODE                DESIRED STATE       CURRENT STATE                ERROR               PORTS
bgqpm1s0a24l        my_web.1            nginx:1.13          slave01             Running             Running about a minute ago                       
jttvdgzpiz02        my_web.2            nginx:1.13          slave01             Running             Running about a minute ago                       
t8yqfrzoa7fj        my_web.3            nginx:1.13          slave02             Running             Running about a minute ago                       
xgh712gi2eld        my_web.4            nginx:1.13          slave02             Running             Running about a minute ago                       
2tnw3tnofyn5        my_web.5            nginx:1.13          slave01             Running             Running about a minute ago                       
on4khcpkb2h7        my_web.6            nginx:1.13          slave02             Running             Running about a minute ago                       
gxdeqfbmq60k        my_web.7            nginx:1.13          slave01             Running             Running about a minute ago                       
kmyz0btgb0hk        my_web.8            nginx:1.13          slave02             Running             Running about a minute ago                       
lso2ry7f2v0o        my_web.9            nginx:1.13          slave01             Running             Running 2 minutes ago                            
ee21b2ud0mkk        my_web.10           nginx:1.13          slave02             Running             Running about a minute ago          
查看更新服务

3、管理节点:手动回滚到上一个版本

docker service update --rollback my_web
Docker Swarm 服务版本更新与回滚第1张Docker Swarm 服务版本更新与回滚第18张
命令:docker service ls
ID                  NAME                MODE                REPLICAS            IMAGE               PORTS
nikder7y06o2        my_web              replicated          10/10               nginx:1.12        
查看回滚版本

免责声明:文章转载自《Docker Swarm 服务版本更新与回滚》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇sublime text3 3176激活码WPF界面设计—撸大师下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

docker搭建svn并对svn客户端进行相关操作

1.开发者前言 这篇博客我根据自己经验和搜索总结而来的,不足之处还希望大家谅解。我写这篇文章的原因是,我在网上看了很多资料,但是感觉很多都是不很全。并且一个很不好的现象是很多都是复制别人博客,缺的很多,希望我的这篇博客对大家有一点点帮助,谢谢。 2.docker中svn搭建 2.1. 搭建前准备 1)搭建docker 2)配置相关docker环境 2.2....

Redis数据库之概念与创建服务

  概念                                  Remote   Dictionary  Server key-value  数据库存储系统,数据结构服务器。 键是String类型,值(value)可以是字符串(String), 哈希(Map), 列表(list), 集合(sets)和有序集合(sorted sets),hype...

redis 在 php 中的应用(key篇)

本文为我阅读了redis参考手册之后结合博友的博客编写,注意 php_redis 和 redis-cli 的区别(主要是返回值类型和参数用法) 目录: KEY(键) DEL EXISTS EXPIRE EXPIREAT keys MOVE PERSIST TTL RANDOMKEY RENAME RENAMENX TYPE SORT KEY(...

Docker 配置固定IP及桥接的实现方法(转载)

这篇文章主要介绍了Docker 配置固定IP和桥接的实现方法的相关资料,这里详细介绍了Docker 的四种网络模式及如何实现桥接的案例,需要的朋友可以参考下 docker默认使用bridge模式,通过网桥连接到宿主机,而容器内部的ip则从网桥所在的ip段取未用的ip。这样做一个不方便的地方在于容器内部的ip不是固定的,想要连接容器时只能通过映射到宿主...

使用 Docker + SSH代理 来实现访问内网网站

导览 1. 实现SSH远程代理本地站点命令 2. 简单的可用代码 3. 参考或原理 4. 可恶的问题 magento-in-docker magento-in-docker-ssl 一,实现SSH远程代理本地站点命令 1,查看 docker 日志。 【 查看Nginx请求错误详情 】 docker logs <magento-we...

Java八股文——Redis与一致性协议

Redis Redis数据结构   String字符串,list链表,hash键值对,set集合,sortedset有序集合,BloomFilter布隆过滤器   布隆过滤器原理:当一个元素被加入到集合中时,通过K个散列函数将元素分布到一个位数组上的K个点,查询该元素的时候,如果hash出来的这个K个点都为1,则说明元素可能存在,如果有一个为0,则说明元素...