调用docker exec时root是否为默认用户(不使用--user)?Dockerfile中的USER行是否会影响docker exec的默认用户?
docker exec
root
--user
USER
8i9zcol21#
docker exec中的默认用户与用于启动容器的用户相同,该用户可以在docker run或合成文件中设置。如果您在启动容器时没有显式设置用户,它将默认为映像中配置的用户,您可以检查映像以查找此用户。这是由停靠文件中的最后一个USER行配置的。它也可以由FROM行指定的父映像配置。如果映像和run命令都没有指定用户,docker默认为root,uid 0。
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
oipij1gg3#
当你在你的容器中运行一个交互式终端时,你可以只运行
whoami
命令来获取有效用户。是的,它将是您定义的在docker run中运行容器的同一个用户,或者在docker文件中使用USER。默认情况下,我相信默认的Windows用户是ContainerAdministrator,Linux用户是root。我发现在Windows中使用ContainerUser运行容器是一个很好的安全实践,基本上是一个经过验证的用户,拥有更多的权限,但远远低于管理员。
3条答案
按热度按时间8i9zcol21#
docker exec中的默认用户与用于启动容器的用户相同,该用户可以在docker run或合成文件中设置。
如果您在启动容器时没有显式设置用户,它将默认为映像中配置的用户,您可以检查映像以查找此用户。这是由停靠文件中的最后一个USER行配置的。它也可以由FROM行指定的父映像配置。
如果映像和run命令都没有指定用户,docker默认为
root
,uid 0。wgx48brx2#
Docker文件中的USER行是否会影响Docker exec的默认用户?
是的,正如文件所述:
USER指令设置用户名(或UID)和可选的用户组(或GID),以便在运行映像时以及在Dockerfile中跟随该指令的任何RUN、CMD和ENTRYPOINT指令时使用。
下面是一个示例Dockerfile,它创建一个用户并将其设置为运行用户。
构建映像
运行容器
执行容器。查看运行用户是否为指定的默认用户
oipij1gg3#
当你在你的容器中运行一个交互式终端时,你可以只运行
命令来获取有效用户。是的,它将是您定义的在docker run中运行容器的同一个用户,或者在docker文件中使用USER。默认情况下,我相信默认的Windows用户是ContainerAdministrator,Linux用户是root。
我发现在Windows中使用ContainerUser运行容器是一个很好的安全实践,基本上是一个经过验证的用户,拥有更多的权限,但远远低于管理员。