Dockerfile WORKDIR 也保留在映像中

Dockerfile WORKDIR 也保留在映像中

我正在学习在线教程来了解 dockerfiles。有一个测验问题:

Dockerfile WORKDIR 命令更改目录:

  1. 仅适用于 Dockerfile 的其余部分
  2. 以及完成的图像中。

我的选择(错误)是:“1.仅在 Dockerfile 的其余部分中”。

有人可以通过举一个例子来纠正我,第二个(正确的)答案可能会有好处吗?

文档中的 WORKDIR

答案1

很多时候,您需要从特定目录执行代码,可能是您正在运行的应用程序操作当前目录中的文件,可能是应用程序需要当前目录中的配置,也可能是应用程序位于当前目录中。WORKDIR允许镜像创建者进行设置,这样运行容器的人就不需要担心它。

例如;我之前遇到的一个用例是创建一个 docker 容器,其中包含一个操作当前目录中文件的应用程序。如果没有设置,WORKDIR您必须将卷绑定到一个位置,然后运行cd /location每个命令:

docker -v $PWD:/location someimage "cd /location; somecommand"

通过设置WORKDIR/location您可以删除cd

docker -v $PWD:/location someimage somecommand

这方便很多。

相关内容