遇到的问题: 接到客户提的一个要求,使用 ps -ef 查看到的应用进程,不能是 root 运行的。
解决所做的尝试:
网上查了很久,发现比如 sudo,或者当前用户加入 docker 组,本质都还是 root 运行的 在官网看到 https://docs.docker.com/engine/security/rootless/
标题: Run the Docker daemon as a non-root user (Rootless mode) 其中: Rootless mode was introduced in Docker Engine v19.03 as an experimental feature. Rootless mode graduated from experimental in Docker Engine v20.10. 在 Docker Engine v19.03 中引入了无根模式作为实验特性。无根模式毕业于 Docker 引擎 v20.10 的实验。
那意思是 v19.03 才作为实验特性添加? 现在我们用的版本是 V18,docker-compose 才刚支持到 v19 版本。
求教: 是我理解错了,还是说现在确实没有比较稳定成熟的方案呢?
1
Ariver 2021-05-24 17:05:18 +08:00
你是说,从宿主机上看,docker 里面的进程的是 root ?
这个 root 不是宿主机上的 root 啊 你可以自己写 Dockerfile 里面指定一个普通用户运行程序。 |
2
pabupa 2021-05-24 17:10:32 +08:00
我之前好像看多说,podman 支持非 root 用户。不过我没用过……
|
4
Ariver 2021-05-24 17:17:14 +08:00
那就是 podman
|
5
iblessyou OP @Ariver 工程量有点大,据我所知,公司现在没用过,时间紧,会出什么问题难预计。
而且几个部门做的,加上数据库之类的第三方包,总共近 40 个,他们应该包不通用吧? |
6
patrickyoung 2021-05-24 17:25:48 +08:00 via iPhone
@iblessyou image 通用,redhat 做的,你们买 redhat 服务就行
|
7
iblessyou OP @patrickyoung 必须还要买额外服务吗?
|
8
Jirajine 2021-05-24 17:41:14 +08:00 via Android
最简单稳定的方式就是镜像本身做适配,参考 linuxserver.io 的镜像。
|
9
patrickyoung 2021-05-24 18:00:43 +08:00 via iPhone
@iblessyou 你要 podman,要 rootless,又不想背锅,又不想出钱,那怎么玩?
|
10
patrickyoung 2021-05-24 18:01:23 +08:00 via iPhone
你要愿意背锅,那直接 podman 也行,反正 podman 免费,只是买 rh 的服务而已
|
11
iblessyou OP @patrickyoung 呃,莫激动,可能你没理解我意思。
我也只是个普通开发,能解决了解决。 解决不了像换工具,需要花费这些,只要能尽可能了解下,给上面阐明问题解决方案,可能有什么坑就行。我就算有个满意交代了。 需要怎么做由他们决定 ,对吧。 |
12
bwangel 2021-05-27 10:13:51 +08:00
> 接到客户提的一个要求,使用 ps -ef 查看到的应用进程,不能是 root 运行的。
感觉实现这个需求不需要 podman 啊? FROM ubuntu:20.04 RUN useradd -m app RUN exec setuidgid app app gunicorn 这样就会以 app 用户启动 1 号 进程 gunicorn,用户在容器内 ps 看到的进程都不属于 root |
13
iblessyou OP |