将更改从基础图像传播到 "child" 图像,Docker

Propgate changes from base image to "child" image, Docker

我正在使用 docker,我想知道是否可以传播对基础图像的 "child" 图像的更改。希望以下一系列操作可以更清楚地说明我的意思。

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 安装到基本映像并将其传播到 "children",而不是遍历每个子映像并安装 java.[=14 会容易得多=]

我承认我是新来的docker,所以这样的事情可能吗?如果没有,您将如何一次修改多个具有相同更改的图像?那可能吗?谢谢

运行 docker 容器以 "instance of" 类型的方式与创建它们的图像相关。这意味着您无法 "propagate" 改变预期的方式。 你最好使用 Dockerfile 来描述如何构建你的 docker 图像,而不是手动修改 运行 容器。

没有

容器是短暂的,你扔掉它们然后重新开始,而不是试图修补它们。

而是使用 Dockerfile 为您的容器创建映像。当您想进行更改时,更新 Dockerfile 并将旧容器替换为新版本。