【发布时间】:2021-02-05 19:13:11
【问题描述】:
我们可以使用WORKDIR在Dockerfile中设置一个目录为工作目录,但是不设置的默认值是多少?
【问题讨论】:
-
只需使用
RUN pwd执行单行Dockerfile
标签: docker dockerfile workdir
我们可以使用WORKDIR在Dockerfile中设置一个目录为工作目录,但是不设置的默认值是多少?
【问题讨论】:
RUN pwd执行单行Dockerfile
标签: docker dockerfile workdir
说是/,所以是根目录
【讨论】:
默认值确实是/,如其他地方所述。值得一提的是,您几乎永远不会从空的 docker 映像 (FROM scratch) 运行,因此 WORKDIR 可能是由您正在使用的基础映像设置的。
例如,https://github.com/docker-library/tomcat/blob/master/Dockerfile-alpine.template 具有 WORKDIR $CATALINA_HOME,https://github.com/dockerfile/ubuntu/blob/master/Dockerfile 具有 WORKDIR /root。 (https://hub.docker.com/r/base/archlinux/~/dockerfile/ 不使用 WORKDIR。)
因此,最好明确设置您自己的WORKDIR。
【讨论】:
在容器中运行二进制文件的默认工作目录是根目录 (/),但开发人员可以使用 Dockerfile WORKDIR 命令设置不同的目录。操作员可以使用以下命令覆盖它:
-w="": Working directory inside the container
【讨论】:
因为在刚出生的 docker 或严格来说是容器中没有用户,只有 root。因此,正如guy 所说,对于每个更改都会对该容器进行提交。因此,默认情况下,或者您询问 WORKDIR 的密码是 / root 并且每次执行 /bin/bash 时都像这样:
$docker exec -i -t 53f784fwer54 /bin/bash
在一个正在运行的容器上,它会将你放在根目录中的/。
【讨论】:
/ 的回答是不正确且不相关的。新容器的默认工作目录与镜像的默认工作目录相同。例如,我刚刚运行 docker exec -ti <my_app> /bin/bash;,然后在新的 bash 进程中运行 pwd,我看到工作目录是 /app。