关于Docker的文档尚不明确,Google给了我矛盾的答案。
调用root
(没有docker exec
时,--user
是默认用户吗?
Dockerfile中的USER
行会影响docker exec
的默认用户吗?
答案 0 :(得分:5)
docker exec中的默认用户与用于启动容器的用户相同,可以在docker run或您的撰写文件中进行设置。
如果在启动容器时未明确设置用户,它将默认为映像中配置的用户,您可以检查映像以进行查找。这是由Dockerfile中的最后一个USER行配置的。它也可以由FROM行指定的父图像进行配置。
如果图像和运行命令均未指定用户,则docker默认为root,uid 0。
答案 1 :(得分:2)
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