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

Ant*_*hez 13 docker dockerfile docker-compose docker-machine

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

Dockerfile

在此输入图像描述

当我从上面执行 Dockerfile 时会发生这种情况

在此输入图像描述

我怎样才能阻止 Docker 这样做呢?

小智 11

docker build --rm=false

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


ano*_*4.1 8

Dockerfile 和RUN(容器内)的当前路径不同。

每个RUN命令都从 Dockerfile 路径(例如“/”)开始。

当你这样做时RUN cd /app,“内部路径”会改变,但“Dockerfile 路径”不会改变。下一个RUN命令将再次在“/”处运行。

要更改“Dockerfile 路径”,请使用WORKDIR(请参阅参考资料),例如WORKDIR /opt/firefox

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

在多行上:

RUN cd opt; \
    ls; \
    cd firefox; \
    ls
Run Code Online (Sandbox Code Playgroud)

(澄清一下:Docker 删除中间容器并不重要,这不是本例中的问题。)