我正在学习在线教程来了解 dockerfiles。有一个测验问题:
Dockerfile WORKDIR 命令更改目录:
- 仅适用于 Dockerfile 的其余部分
- 以及完成的图像中。
我的选择(错误)是:“1.仅在 Dockerfile 的其余部分中”。
有人可以通过举一个例子来纠正我,第二个(正确的)答案可能会有好处吗?
答案1
很多时候,您需要从特定目录执行代码,可能是您正在运行的应用程序操作当前目录中的文件,可能是应用程序需要当前目录中的配置,也可能是应用程序位于当前目录中。WORKDIR
允许镜像创建者进行设置,这样运行容器的人就不需要担心它。
例如;我之前遇到的一个用例是创建一个 docker 容器,其中包含一个操作当前目录中文件的应用程序。如果没有设置,WORKDIR
您必须将卷绑定到一个位置,然后运行cd /location
每个命令:
docker -v $PWD:/location someimage "cd /location; somecommand"
通过设置WORKDIR
为/location
您可以删除cd
:
docker -v $PWD:/location someimage somecommand
这方便很多。