Docker能否自动重启容器并使用新的映像标记提交更改?

时间:2016-03-30 03:06:51

标签: image docker containers yaml docker-compose

我正在使用Docker进行部署,因为我使用Docker-Compose(.yml文件)同时启动~6个容器。 Compose文件中的每个图像都是本地找到的(部署环境中没有Internet连接)。

我的部署采取的步骤如下:

  1. 运行docker-compose up(使用带有"最新"标签的图像)从本地图像启动6个容器,例如image1:latest,image2:latest等。
  2. 退出/停止时,我有6个已停止的容器。手动重启六个已停止的容器中的每一个(docker start xxx)
  3. 手动提交每个重新启动的容器(docker commit xxx)
  4. 以递增方式手动重新标记每个上一代图像(image1:latest - > image1:version1,image1:version2等)并手动删除包含"最新"的图像。标签
  5. 使用" latest"手动标记每个已提交的容器(现在是图像)。 tag(image1:latest)
  6. 这个过程非常涉及用户,我们的部署需要用户参与才能运行" docker-compose up"命令然后关闭/停止Docker-Compose。

    所需的最终目标是让脚本或Docker自己处理这些步骤,最终得到不同代的图像(image1:version1,image1:version2,image1:latest等)。

    所以,我的问题是,我将如何创建脚本(或让Docker这样做)脚本(或Docker)可以自动创建:

    • 停止/退出Docker-Compose时重启已停止的容器
    • 提交重新启动的容器
    • 使用最新标签将之前的图像重新标记为增量版本#(图像1:版本1,图像1:版本2等),然后删除上一图像1:最新图像
    • 使用" latest"标记新提交的重新启动的容器(现在是图像)。标签

    这是一个相当冗长且密集的问题,但我很感激任何帮助完成任务所需的任何步骤。谢谢。

1 个答案:

答案 0 :(得分:1)

了望塔项目试图解决这个问题。

https://github.com/CenturyLinkLabs/watchtower

更新基本映像时会自动重新启动正在运行的容器。

它也是智能的,例如,当需要重新启动链接到其他容器的容器时,它会在不破坏链接的情况下这样做。

我从未尝试过,但值得一试!

让我们知道它是怎么回事。我会喜欢这个问题,因为这听起来很棒。

PS如果了望塔表示疼痛,你会尝试手动执行此操作......

docker inspect

是你的朋友,因为它为你提供了大量关于容器和图像的信息。允许您确定当前状态。