Docker镜像是否在生产环境中以递增方式更新

时间:2015-07-29 16:12:44

标签: docker

假设我们在生产环境中运行了docker image实例。该映像包含Linux OS和应用程序jar文件。作为补丁版本的一部分,应用程序jar中的某些类有一些变化。这些更改是否可以在生产中逐步更新,或者我们需要替换整个图像?如果我们可以创建一个增量并更新它,那么执行这些操作的命令是什么。

在大型生产环境中,有大量的docker实例正在运行且需要修补,移动整个图像而不是增量/增量将会超出头部。

2 个答案:

答案 0 :(得分:2)

我不会在生产环境中对docker镜像使用更改和提交策略。仅仅因为最终你无法完全重现对图像所做的更改。你只能看到差异。

我将使用Dockerfile在构建环境(例如Jenkins)中构建图像。特别是 - 正如您提到的JAR文件 - 当您使用maven构建Java应用程序时,您还可以使用docker-maven-plugin在同一构建中非常轻松地生成docker镜像。因此,您始终可以在构建环境中重现图像。

然后,当您需要部署到数十台服务器的部署阶段时,您当然不会手动执行此操作。你会自动化这一步。

答案 1 :(得分:0)

根据FAQ,您可以逐步更新图片,类似于git pull。

  

版本。 Docker包括类似git的功能,用于跟踪容器的连续版本,检查版本之间的差异,提交新版本,回滚等。历史记录还包括容器的组装方式和由谁组成,因此您可以从生产服务器获得完全可跟踪性一直回到上游开发者。 Docker还实现了增量上传和下载,类似于git pull,因此只能通过发送差异来传输容器的新版本。

至于如何做到这一点,我认为docker pull命令是可行的方法,因为它跳过已下载的图层并且只获取新图层。