【问题标题】:docker: What is the default WORKDIR in a Dockerfile?docker:Dockerfile 中的默认 WORKDIR 是什么?
【发布时间】:2021-02-05 19:13:11
【问题描述】:

我们可以使用WORKDIRDockerfile中设置一个目录为工作目录,但是不设置的默认值是多少?

【问题讨论】:

  • 只需使用RUN pwd执行单行Dockerfile

标签: docker dockerfile workdir


【解决方案1】:

docker workdir

说是/,所以是根目录

【讨论】:

    【解决方案2】:

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

    例如,https://github.com/docker-library/tomcat/blob/master/Dockerfile-alpine.template 具有 WORKDIR $CATALINA_HOMEhttps://github.com/dockerfile/ubuntu/blob/master/Dockerfile 具有 WORKDIR /root。 (https://hub.docker.com/r/base/archlinux/~/dockerfile/ 不使用 WORKDIR。)

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

    【讨论】:

      【解决方案3】:

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

      -w="": Working directory inside the container
      

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

      【讨论】:

        【解决方案4】:

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

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

        在一个正在运行的容器上,它会将你放在根目录中的/

        【讨论】:

        • 您的回答不仅离题,而且完全是错误的。首先,问题是:如果没有在 Dockerfile 中明确设置,则 IMAGE 的默认 WORKDIR 是什么。您说新 CONTAINER 的默认工作目录是 / 的回答是不正确且不相关的。新容器的默认工作目录与镜像的默认工作目录相同。例如,我刚刚运行 docker exec -ti <my_app> /bin/bash;,然后在新的 bash 进程中运行 pwd,我看到工作目录是 /app
        猜你喜欢
        • 2015-06-09
        • 1970-01-01
        • 2018-04-03
        • 2012-07-04
        • 2020-10-27
        • 1970-01-01
        • 2018-06-22
        相关资源
        最近更新 更多