如何防止 Docker 在执行 运行 命令时删除中间容器?

How can I prevent Docker from removing intermediate containers when executing RUN command?

我遇到的错误是我想在我的 Docker 机器上执行命令“更改目录”,但每次我在我的 Docker 中执行 运行 指令文件,它会删除实际容器(中间容器)。

DOCKERFILE

当我从上面执行Docker文件时会发生这种情况

如何防止 Docker 这样做?

当您使用 docker build --no-cache 时,这将在您构建映像时删除中间容器。当您多次 运行 build 时,这可能会影响构建时间。或者,您可以选择使用 \ 将多个 shell 命令放入一个 shell 命令中,然后将其用作 RUN 参数。 可以找到微尘提示 here

Docker文件和运行(容器内)的当前路径不同。

每个 运行 命令都从 Docker 文件路径(例如“/”)开始。

当您执行 RUN cd /app 时,“内部路径”会更改,但“Docker文件路径”不会更改。下一个 运行 命令将再次是 运行 在 '/'。

要更改“Docker文件路径”,请使用 WORKDIR(参见 reference),例如 WORKDIR /opt/firefox.

另一种方法是链接已执行的 运行 命令,正如 EvgeniySharapov 指出的那样:RUN cd opt; ls; cd firefox; ls

多行:

RUN cd opt; \
    ls; \
    cd firefox; \
    ls

(澄清一下:Docker 删除中间容器并不重要,在这种情况下这不是问题。)

docker build --rm=false

成功构建后删除中间容器(默认为 true)