以root用户身份连接到docker容器

运行时默认为

docker run -it [myimage]

要么

docker attach [mycontainer]

您以root用户身份连接到terminal,但是我想以不同的用户身份进行连接。 这可能吗?

docker run

只需在启动Docker容器时添加--user <user>选项以更改为其他用户。

 docker run -it --user nobody busybox 

对于docker attachdocker exec

由于该命令用于附加/执行到现有进程中,因此直接使用当前用户。

 docker run -it busybox # CTRL-P/Q to quit docker attach <container id> # then you have root user / # id uid=0(root) gid=0(root) groups=10(wheel) docker run -it --user nobody busybox # CTRL-P/Q to quit docker attach <container id> / $ id uid=99(nobody) gid=99(nogroup) 

如果你真的想附加到你想要的用户,那么

  1. 从那个用户开始run --user <user>或者使用USER在你的Dockerfile提到它
  2. 使用`su来改变用户

你可以使用如下命令在运行的docker容器中运行一个shell:

docker exec -it --user root <container id> /bin/bash

您可以在Dockerfile中指定USER 。 所有后续操作将使用该帐户执行。 如果您只想在启动容器时(而不是在构build图像时)使用该用户,则可以在CMDENTRYPOINT之前指定USER一行。 从结果图像中启动容器时,将以指定的用户身份进行附加。

我能做到这一点的唯一方法是:

docker run -it -e USER=$USER -v /etc/passwd:/etc/passwd -v `pwd`:/siem mono bash su - magnus

所以我必须同时指定$ USER环境variables和/ etc / passwd文件。 这样,我可以在/ siem文件夹中编译并且保留文件的所有权,而不是以root身份。