以root用户身份连接到docker容器
运行时默认为
docker run -it [myimage]
要么
docker attach [mycontainer]
您以root用户身份连接到terminal,但是我想以不同的用户身份进行连接。 这可能吗?
docker run
:
只需在启动Docker容器时添加--user <user>
选项以更改为其他用户。
docker run -it --user nobody busybox
对于docker attach
或docker 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)
如果你真的想附加到你想要的用户,那么
- 从那个用户开始
run --user <user>
或者使用USER
在你的Dockerfile
提到它 - 使用`su来改变用户
你可以使用如下命令在运行的docker容器中运行一个shell:
docker exec -it --user root <container id> /bin/bash
您可以在Dockerfile中指定USER
。 所有后续操作将使用该帐户执行。 如果您只想在启动容器时(而不是在构build图像时)使用该用户,则可以在CMD
或ENTRYPOINT
之前指定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身份。