ubuntu - 为什么我的 docker 守护进程以任意非 docker 用户身份运行容器?

标签 ubuntu docker

在 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 指令创建的并设置为 splunkuid

更多信息 here

关于ubuntu - 为什么我的 docker 守护进程以任意非 docker 用户身份运行容器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33770416/

相关文章:

docker - microk8s 拉取镜像,卡在 ContainerCreating 状态

ubuntu - 当我输入终端时,我看到其他字符 ubuntu

json - 从 ubuntu 上的大 txt 文件中查找和替换文本

docker - 带有aws-cli v2和dind的Docker镜像,基于Alpine:3.11

docker - 我的 Docker 容器没有 IP 地址。为什么?

docker - 为什么在 Windows 中使用绑定(bind)挂载卷时需要/host_mt/

caching - Travis CI 可以缓存 docker 图像吗?

c++ - Box2D:导致 "Polygon is degenerate"的三角形

node.js - GraphicsMagick + ImageMagick + 拒绝错误 : Command failed:

docker - 如何使用 Tomcat for java 在 Docker 容器上选择 Tomcat