使用 docker,您可以非常好地基于其他图像创建图像。例如,您可以制作一个图像 Java-jdk7(基于最新的 Ubuntu LTS),并在此基础上创建图像 elastic-search 和 tomcat7(两者都需要 java)。
所以,如果我不标记我的图像,我最终会得到以下内容(摘录docker images
):
╔══════════════════════╦════════╦══════════════╗
║ REPOSITORY ║ TAG ║ ID ║
╠══════════════════════╬════════╬══════════════╣
║ ubuntu ║ 12.04 ║ 8dbd9e392a96 ║
║ quintenk/jdk7-oracle ║ latest ║ 8928245086f4 ║
║ quintenk/tomcat7 ║ latest ║ 995cdb2cbfa8 ║
║ quintenk/elastics ║ latest ║ 123abc456ef2 ║
╚══════════════════════╩════════╩══════════════╝
现在来回答这个问题。我如何/应该保持这种依赖关系?我如何执行维护一个 1 图像和从属图像以及?
- 如果我更新我的 jdk 映像(
apt-get upgrade
例如),我假设我没有损坏依赖映像?但是,我还假设依赖关系树不再像您期望的那样。[更新:我已经复制了这个,所以请看下面我自己的答案] - 如果 1 是正确的,有什么方法可以让依赖图像将自己标记为过时,并且(希望)让它们重建自己?
或者是用版本号标记容器,并手动重建和重新分配所有依赖项并增加版本号标记的方法?这意味着需要更改 Dockerfile 以进行更新。
更新:我在他们的演示文稿中的 docker 网站上找到了以下图片。但是,我不太确定如何执行此操作的步骤(尤其是我描述的对其他图像的依赖)。