docker exec的默认用户是什么?

时间:2018-08-29 05:41:54

标签: docker docker-exec

关于Docker的文档尚不明确,Google给了我矛盾的答案。

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

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

2 个答案:

答案 0 :(得分:5)

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

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

如果图像和运行命令均未指定用户,则docker默认为root,uid 0。

答案 1 :(得分: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