Docker可以自动重新启动容器并使用新的图像标签提交更改?

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

按照我的部署所采取的步骤如下所示:

  1. 运行docker-compose up(使用带有“latest”标签的图像从本地图像启动6个容器,如image1:latest,image2:latest等)
  2. 退出/停止时,我有6个停止的容器。 手动重新启动六个停止的容器(docker start xxx)
  3. 手动提交每个重新启动的容器(docker commit xxx)
  4. 手动重新标记每一代前一代图像(image1:最新 – >图像1:版本1,图像1:版本2等),并手动删除包含“最新”标签的图像
  5. 手动标记每个提交的容器(现在是图像)与“最新”标签(image1:最新)

这个过程是相当用户参与的,我们的部署需要用户参与才能运行“docker-compose up”命令,然后closures/停止Docker-Compose。

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

所以,我的问题是,我将如何去创build一个脚本(或让Docker做到这一点),脚本(或者Docker)可以自主地执行脚本:

  • 在停止/退出Docker-Compose时重新启动已停止的容器
  • 提交重新启动的容器
  • 使用最新的标签重新标记以前的图像到增加的版本#(图像1:版本1,图像1:版本2等),然后删除以前的图像1:最新的图像
  • 使用“最新”标签标记新提交的重新启动的容器(现在是图片)

这是一个相当冗长和密集的问题要回答,但我将不胜感激任何帮助完成我的任务所需的任何步骤。 谢谢。

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

https://github.com/CenturyLinkLabs/watchtower

当更新基础映像时,它会自动重新启动正在运行的容器。

它也是智能的,例如,当需要重新启动与其他容器链接的容器时,它不会破坏链接。

我从来没有尝试过,但值得一试!

让我们知道怎么回事。 我会喜欢这个问题,因为这听起来不错。

PS如果了望塔certificate一个痛苦,你尝试手动做到这一点,然后…

docker inspect 

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