【发布时间】:2015-10-19 14:19:40
【问题描述】:
我正在使用docker,我想知道是否可以将更改传播到基本图像的“子”图像。希望下面的一系列操作可以更清楚地说明我的意思。
docker run -i -t baseimage // start up baseimage
<detach while leaving baseimage running>
docker commit <baseimage id> childimage // new image created from baseimage
docker run -i -t baseimage // start up baseimage
touch test.txt // make some small change
<detach while leaving baseimage running>
docker commit <baseimage id> baseimage // save base image
docker run -i -t childimage // start up childimage
ls test.text // test.txt isn't there
我想这样做的原因是我有一个基础图像,我从中创建了几个子图像。只有在我创建了子图像之后,我才意识到我需要在所有这些图像上安装 java。对我来说,以某种方式将 java 安装到基础映像并将其传播给“孩子”会容易得多,而不是遍历每个子映像并安装 java。
我承认我是 docker 新手,这可能吗?如果不是,您将如何一次修改多个具有相同更改的图像?那可能吗?谢谢。
【问题讨论】:
-
当您设计 docker 继承层次结构时,无需手动传播任何内容,因为子项会在实例化时自动获取其父 docker 文件的任何内容。
-
并非如此。由子镜像创建的容器没有从基础镜像继承 test.txt 文件
-
是的,因为你没有读过我的第一句话“当你设计你的 docker 继承层次结构时”——使用 Dockerfile。
-
即使您基于 Dockerfile 构建镜像,您仍然需要重新构建子镜像,然后才能将父镜像中的更改考虑在内。
标签: linux docker parent-child propagation image-file