• Swarm应用管理
    • 应用更新
    • 滚动升级

    Swarm应用管理

    应用更新

    继续前面的vote应用。

    加入我们更新了vote应用的result和vote镜像代码重新构建了新镜像,修改docker-stack.yml文件,将其中的sz-pg-oam-docker-hub-001.tendcloud.com/library/examplevotingapp_vote:beforesz-pg-oam-docker-hub-001.tendcloud.com/library/examplevotingapp_result:before分别修改为sz-pg-oam-docker-hub-001.tendcloud.com/library/examplevotingapp_vote:aftersz-pg-oam-docker-hub-001.tendcloud.com/library/examplevotingapp_result:after,相当于要上线新版本,可以进行如下操作:

    1. $docker stack deploy --compose-file docker-stack.yml vote
    2. Updating service vote_result (id: 5bte3o8e0ta98mpp80c51ro5z)
    3. Updating service vote_worker (id: h65a6zakqgq3dd2cfgco1t286)
    4. Updating service vote_visualizer (id: zgiuxazk4sscyjj0ztcmvqnxf)
    5. Updating service vote_redis (id: z4q2gnvoxtpjv7e9q4s5p1ovs)
    6. Updating service vote_db (id: k7xzd0adhh5223fbsspouryxs)
    7. Updating service vote_vote (id: pvvi5qqcsnaghadu0w6c82pd3)

    再次访问投票和结果页面,会看到投票选项已经变成了JAVA、.NET。投票结果页面会显示刚才投票的结果。

    官方的完整示例文档地址:https://github.com/docker/labs/blob/master/beginner/chapters/votingapp.md

    滚动升级

    创建service的时候可以指定—update-delay参数,可以为10m23s这样写法,表示执行update的间隔是10分钟23秒。也可以用--update-parallelism参数指定并发update数量。

    1. $ docker service create \
    2. --replicas 3 \
    3. --name redis \
    4. --update-delay 10s \
    5. redis:3.0.6
    6. 0u6a4s31ybk7yw2wyvtikmu50

    update service的时候需要指定镜像名。

    1. $ docker service update --image redis:3.0.7 redis
    2. redis

    滚动升级的时候也可以指定升级策略,默认是:

    • 停止第一个task
    • 调度update task到刚停止的那个task上
    • 启动刚调度的那个task
    • 如果刚调度的那个task返回RUNNING状态,则等到udpate delay时间后停止下一个task
    • 如果每次update都失败,则返回FAILED