调用时是root默认用户docker exec(不带--user)吗?
USERDockerfile 中的一行是否会影响默认用户docker exec?
docker exec 中的默认用户与用于启动容器的用户相同,可以在 docker run 或您的 compose 文件中设置。
如果您在启动容器时没有明确设置用户,它将默认为镜像中配置的用户,您可以检查镜像来查找。这是由 Dockerfile 中的最后一个 USER 行配置的。它也可以由 FROM 行指定的父映像配置。
如果镜像和运行命令都没有指定用户,docker 默认为root, uid 0。
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