22

调用时是root默认用户docker exec(不带--user)吗?

USERDockerfile 中的一行是否会影响默认用户docker exec

4

2 回答 2

20

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

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

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

于 2018-08-29T08:22:49.323 回答
11

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

的,正如文档提到的

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
于 2018-08-29T06:26:55.657 回答