【问题标题】:What's the default user for docker exec?docker exec 的默认用户是什么?
【发布时间】:2018-08-29 05:41:54
【问题描述】:

root 是调用docker exec 时的默认用户(没有--user)吗?

Dockerfile 中的USER 行会影响docker exec 的默认用户吗?

【问题讨论】:

    标签: docker docker-exec


    【解决方案1】:

    docker exec 中的默认用户与启动容器的用户相同,可以在 docker run 或您的 compose 文件中设置。

    如果您在启动容器时没有明确设置用户,它将默认为镜像中配置的用户,您可以检查镜像来查找。这是由 Dockerfile 中的最后一个 USER 行配置的。它也可以由 FROM 行指定的父映像配置。

    如果镜像和运行命令都没有指定用户,docker默认为root,uid 0。

    【讨论】:

      【解决方案2】:

      Dockerfile 中的 USER 行会影响 docker exec 的默认用户吗?

      是的,as the docs mention

      USER 指令设置用户名(或 UID)和可选的用户组(或 GID),以在运行映像时以及 Dockerfile 中跟随它的任何 RUN、CMD 和 ENTRYPOINT 指令使用。

      这是一个示例 Dockerfile,它创建一个用户并将其设置为运行用户。

      cat Dockerfile
      FROM ubuntu:latest
      RUN useradd -r sathya
      USER sathya
      

      构建镜像

      docker build -t sathya:user .
      Sending build context to Docker daemon  19.46kB
      Step 1/3 : FROM ubuntu:latest
       ---> 113a43faa138
      Step 2/3 : RUN useradd -r sathya
       ---> Running in 5b72508a891d
      Removing intermediate container 5b72508a891d
       ---> b81692196e13
      Step 3/3 : USER sathya
       ---> Running in d43d399a86ac
      Removing intermediate container d43d399a86ac
       ---> c0388a898992
      Successfully built c0388a898992
      Successfully tagged sathya:user
      

      运行一个容器

      docker run -it -d sathya:user bash
      0903e85fa4de4bb820f015f3ff2bbca9eb2c038814ff7ea809519334687597c7
      

      执行容器。看到运行用户是指定的默认用户

      docker exec -it 0903e85fa4de bash
      sathya@0903e85fa4de:/$ whoami
      sathya
      

      【讨论】:

      • 表示“运行映像时”,而不是在正在运行的容器中执行命令时。当我执行docker exec -it my_container bash 时,我以 root 身份进入,尽管 Dockerfile 中有 USER 行。
      • 你构建了镜像吗?这对我来说可以。见上面的例子
      • 你说得对,问题出在 docker-compose.yml 中,它有 user: root
      猜你喜欢
      • 2023-03-23
      • 2019-07-26
      • 1970-01-01
      • 1970-01-01
      • 2016-03-26
      • 1970-01-01
      • 2016-12-19
      • 2016-02-08
      • 2018-03-19
      相关资源
      最近更新 更多