docker exec的默认用户是什么?

l7mqbcuq  于 2023-03-01  发布在  Docker
关注(0)|答案(3)|浏览(586)

调用docker execroot是否为默认用户(不使用--user)?
Dockerfile中的USER行是否会影响docker exec的默认用户?

8i9zcol2

8i9zcol21#

docker exec中的默认用户与用于启动容器的用户相同,该用户可以在docker run或合成文件中设置。
如果您在启动容器时没有显式设置用户,它将默认为映像中配置的用户,您可以检查映像以查找此用户。这是由停靠文件中的最后一个USER行配置的。它也可以由FROM行指定的父映像配置。
如果映像和run命令都没有指定用户,docker默认为root,uid 0。

wgx48brx

wgx48brx2#

Docker文件中的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
oipij1gg

oipij1gg3#

当你在你的容器中运行一个交互式终端时,你可以只运行

whoami

命令来获取有效用户。是的,它将是您定义的在docker run中运行容器的同一个用户,或者在docker文件中使用USER。默认情况下,我相信默认的Windows用户是ContainerAdministrator,Linux用户是root。
我发现在Windows中使用ContainerUser运行容器是一个很好的安全实践,基本上是一个经过验证的用户,拥有更多的权限,但远远低于管理员。

相关问题