如何防止 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)
我遇到的错误是我想在我的 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)