【发布时间】:2014-11-18 19:19:33
【问题描述】:
我想利用 docker 图像的缓存/分层来节省带宽、磁盘空间和所花费的时间。
让我们说:
- 我已经安装了一个网络应用 docker 映像并将其部署到多个 docker 主机中。
- Docker 映像包含我的 Web 应用程序的源代码。
- 我编写了代码,现在有了新版本的代码。
我应该如何自动创建在最后一个图像之上的新 docker 提交,只包含错误修复?
我的目标是只需要下载小错误修复差异,即可为已下载先前图像的 docker 主机获取新图像。
这是我目前对此的反思状态:
- 我可能会以某种方式结束使用
docker commit来保存图像中的更新。 - 但是我怎样才能访问图像内容?
- 即便如此,我如何导入我的更改,而又不使用与提供 Web 应用程序无关的各种工具(git 和 shell 脚本)弄乱原始 docker 映像?。
- 我查看了与另一个负责更新代码的 docker 共享代码的卷。但不会提交卷。
感谢您提供有关如何实现此目的的任何见解!
编辑:使用多个 Dockerfile 似乎是另一种方法,谢谢http://jpetazzo.github.io/2013/12/01/docker-python-pip-requirements/ 类似的问题。看来我需要即时生成我的 dockerfile。
【问题讨论】:
-
如何将代码添加到图像中?
-
@Behe 我不明白你的问题,因为我已经说过这是我的问题的一部分。如果您的问题是关于首先添加代码(在更新应用程序之前),那么我正在考虑在自动构建中使用 ADD,如 dockerfile.github.io/#/python-runtime 。
-
如果您使用 Dockerfile 并将 ADD 命令放在末尾,它应该会命中缓存,直到添加更改的内容,然后为新内容创建一个新层。这听起来有帮助吗?
-
一种利用 docker 镜像分层来节省带宽、磁盘空间和花费的时间并自动在仅包含更改的文件的最后一个镜像之上创建新的 docker commit 的解决方案可在此处获得:stackoverflow.com/a/36561768/682317