【发布时间】:2016-07-17 20:53:03
【问题描述】:
我使用 Docker 进行部署,就目前而言,我使用 Docker-Compose(.yml 文件)同时启动约 6 个容器。 Compose 文件中的每个图像都是在本地找到的(部署环境中没有 Internet 连接)。
就目前而言,我的部署采取的步骤如下:
- 运行 docker-compose up(使用带有“最新”标签的图像从本地图像启动 6 个容器,例如 image1:latest、image2:latest 等)
- 退出/停止时,我有 6 个停止的容器。手动重启六个停止的容器中的每一个(docker start xxx)
- 手动提交每个重新启动的容器(docker commit xxx)
- 以增量方式手动重新标记每个上一代图像(image1:latest -> image1:version1、image1:version2 等)并手动删除包含“最新”标记的图像
- 使用“最新”标签 (image1:latest) 手动标记每个已提交的容器(现在是镜像)
这个过程是用户参与的,我们的部署需要用户参与,只需要运行“docker-compose up”命令然后关闭/停止 Docker-Compose。
所需的最终目标是让脚本或 Docker 自行处理这些步骤并最终生成不同代的映像(image1:version1、image1:version2、image1:latest 等)。
所以,我的问题是,我将如何创建一个脚本(或让 Docker 来做)脚本(或 Docker)可以自主地:
- 在停止/退出 Docker-Compose 时重新启动已停止的容器
- 提交重启的容器
- 用最新标签将以前的图像重新标记为递增的版本#(image1:version1、image1:version2 等),然后删除以前的 image1:latest 图像
- 用“最新”标签标记新提交的重启容器(现在是镜像)
这是一个相当冗长和密集的问题,但如果我能在完成我的任务所需的任何步骤方面提供任何帮助,我将不胜感激。谢谢你。
【问题讨论】:
-
你的第4步和第5步有点混乱。正如我所读到的,您标记最新 -> 增量版本,删除最新标签,然后将增量版本重新标记为最新。为什么会这样?
-
在初始/首次运行时,您拥有所有 6 个图像(docker-compose 启动 6 个容器所需的),并且 compose 会使用“最新”标签抓取图像。然后我们需要保存新生成的图片,并给它们打上“最新”的标签。上一代(初始人口)也不能有“最新”标签,因此我必须用版本号重新标记它。我们的目标是在运行过程中保存新一代图像,并让最新一代包含“最新”图像,以便在我们下次运行时获取它们。
标签: image docker containers yaml docker-compose