Docker中的默认WORKDIR是什么?

Fre*_*ind 64 docker dockerfile

我们可以使用WORKDIR将目录设置为工作目录Dockerfile,但如果我们没有设置,那么默认值是什么?

Tho*_*Fin 41

码头工作

说它是/,所以根目录


Lim*_*ent 17

确实/如其他地方所述.但值得一提的是,您几乎永远不会从空的docker image(FROM scratch)运行,因此WORKDIR很可能是由您正在使用的基本图像设置的.

例如,https://github.com/docker-library/tomcat/blob/master/Dockerfile-alpine.templateWORKDIR $CATALINA_HOME,和https://github.com/dockerfile/ubuntu/blob/master/DockerfileWORKDIR /root.(https://hub.docker.com/r/base/archlinux/~/dockerfile/不会使用WORKDIR.)

因此,最好WORKDIR明确地设置自己的.


小智 6

在容器中运行二进制文件的默认工作目录是根目录(/),但开发人员可以使用Dockerfile WORKDIR命令设置不同的默认值.操作员可以用以下方式覆盖:

-w="": Working directory inside the container
Run Code Online (Sandbox Code Playgroud)

这里:https://docs.docker.com/engine/reference/run/#workdir


Vam*_*lla 6

因为严格来说,在刚出生的 docker 或容器中没有用户,只有 root。因此,正如这家伙所说,对于每个更改,都会对该容器进行一次提交。因此/ ,默认情况下,该密码或正如您所问的 WORKDIR 是root 用户,每次执行/bin/bash这样的操作时:

$docker exec -i -t 53f784fwer54 /bin/bash

在正在运行的容器上,它会将您/置于根目录中。

  • 你的回答不仅偏离主题,而且完全是错误的。首先,问题是:如果未在 Dockerfile 中明确设置,则映像的默认 WORKDIR 是什么。您的回答说新容器的默认工作目录是“/”,这是不正确且不相关的。新容器的默认工作目录与镜像的默认工作目录相同。例如,我刚刚运行“docker exec -ti <my_app> /bin/bash;”,然后在新的 bash 进程中运行“pwd”,我看到工作目录是“/app”。 (3认同)