为什么我的docker守护程序将容器作为任意非docker用户运行?

时间:2015-11-18 01:46:52

标签: ubuntu docker

在Ubuntu计算机上,发出一个有效的“docker run”作为'app'用户,他是'docker'组的一部分。

它开始很好,但是当查看进程树时,它开始是另一个任意用户'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

我知道发布'docker run'命令作为'app'用户只是指示守护进程在特定图像上启动什么脚本。然后守护进程(以root身份运行)将以另一个用户身份运行该进程。我希望这是发布'app'用户而不是其他随机用户。

为什么会这样?我检查了两个用户的UID是不同的。

1 个答案:

答案 0 :(得分:0)

所以不一定,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指令创建的,并设置为splunkuid

更多信息here