在 Ubuntu 机器上,以属于“docker”组的“app”用户身份运行“docker run”。
它启动良好,但是当查看进程树时,它以另一个也在我系统上的任意用户“splunk”启动:
root 3573 0.1 0.6 337532 24216 ? Ssl 01:28 0:00 /usr/bin/docker daemon
root 3678 1.0 0.3 177280 13132 ? Sl 01:30 0:00 \_ docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 8080 -container-ip 172.1.2.3 -container-port 8080
splunk 3686 5.0 0.2 52144 10220 ? Ssl 01:30 0:00 \_ ruby /app/foo/build/bin/my_run_script
splunk 3702 0.0 0.0 4440 656 ? S 01:30 0:00 \_ sh -c bundle exec unicorn -p $PORT -c config/unicorn.rb
splunk 3703 76.0 1.6 301208 63684 ? Sl 01:30 0:03 \_ unicorn master -p 8080 -c config/unicorn.rb
我知道以“app”用户身份发出“docker run”命令只是指示守护进程在特定图像上启动什么脚本。守护进程(以 root 身份运行)然后将以另一个用户身份运行该进程。我希望这是发行“应用程序”的用户,而不是其他一些随机用户。
为什么会这样?我检查了两个用户的 UID 是否不同。
最佳答案
所以不一定,您正在运行的容器的 Dockerfile
是什么样子的?这是将作为不同用户运行的 Dockerfile
RUN
命令示例:
/bin/su -c 'ruby /app/foo/build/bin/my_run_script' someuser
或者你可以像这样运行你的容器:
docker run -u="myuser" mycontainer "ruby /app/foo/build/bin/my_run_script"
更多信息 here
您正在使用的容器可能是使用 USER
指令创建的并设置为 splunk
或 uid
更多信息 here
关于ubuntu - 为什么我的 docker 守护进程以任意非 docker 用户身份运行容器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33770416/