Docker Swarm 服務版本更新與回滾

Docker Swarm 服務版本更新nginx

環境:web

  • 系統:Centos 7.4 x64
  • 應用版本:Docker 18.09.0
  • 管理節點:192.168.1.79
  • 工做節點:192.168.1.78
  • 工做節點:192.168.1.77

一、管理節點:建立服務設置更新策略redis

docker service create \
--replicas 3 \
--name redis \
--update-delay 10s \
--update-parallelism 2 \
--update-failure-action continue \
redis:3.0.6
# 建立命令
docker service create \
# 副本數
--replicas 3 \
# 服務名
--name redis \
# 設定容器間更新時間間隔
--update-delay 10s \
# 更新時同時並行更新數量,默認1
--update-parallelism 2 \
# 任務容器更新失敗時的模式 continue爲繼續使用
--update-failure-action continue \
# 鏡像
redis:3.0.6
命令解析
命令:docker service ls
ID            NAME   MODE        REPLICAS  IMAGE
v76p9bl941bk  redis  replicated  3/3       redis:3.0.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
查看啓動狀況

二、管理節點:手動更新服務版本docker

docker service update --image redis:3.0.7 redis
命令: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 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狀態,再繼續往下更新其餘容器任務,若是更新失敗它會暫停更新,切換到下一個容器任務繼續更新直到全部容器。ide


Docker Swarm 服務版本回滾spa

一、管理節點:建立服務時設定回滾策略3d

docker service create \
--name my_web \
--replicas 10 \
--rollback-parallelism 2 \
--rollback-monitor 20s \
--rollback-max-failure-ratio .2 \
nginx:1.12
# 建立服務
docker service create \
# 服務名
--name my_web \
# 副本數
--replicas 10 \
# 同時執行回滾數動做
--rollback-parallelism 2 \
#  每次容器與容器之間的回滾時間間隔
--rollback-monitor 20s \
# 回滾故障率若是小於百分比容許運行
--rollback-max-failure-ratio .2 \
# 使用鏡像
nginx:1.12
命令解析
命令: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      
查看建立服務

二、管理節點:更新服務提高一個版本code

docker service update --image nginx:1.13 my_web
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          
查看更新服務

三、管理節點:手動回滾到上一個版本orm

docker service update --rollback my_web
命令:docker service ls
ID                  NAME                MODE                REPLICAS            IMAGE               PORTS
nikder7y06o2        my_web              replicated          10/10               nginx:1.12        
查看回滾版本
相關文章
相關標籤/搜索