Docker 现在有成熟的运行于非 root 用户的方案吗 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
iblessyou
V2EX    Docker

Docker 现在有成熟的运行于非 root 用户的方案吗

  •  
  •   iblessyou 2021-05-24 16:57:56 +08:00 3108 次点击
    这是一个创建于 1612 天前的主题,其中的信息可能已经有所发展或是发生改变。

    遇到的问题: 接到客户提的一个要求,使用 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 版本。

    求教: 是我理解错了,还是说现在确实没有比较稳定成熟的方案呢?

    15 条回复    2021-07-06 16:16:29 +08:00
    Ariver
        1
    Ariver  
       2021-05-24 17:05:18 +08:00
    你是说,从宿主机上看,docker 里面的进程的是 root ?
    这个 root 不是宿主机上的 root 啊
    你可以自己写 Dockerfile 里面指定一个普通用户运行程序。
    pabupa
        2
    pabupa  
       2021-05-24 17:10:32 +08:00
    我之前好像看多说,podman 支持非 root 用户。不过我没用过……
    iblessyou
        3
    iblessyou  
    OP
       2021-05-24 17:15:21 +08:00
    @Ariver 不是,是 docker 运行后,在宿主机上 PS -ef
    查看进程,不是说容器内,容器内是什么无所谓
    Ariver
        4
    Ariver  
       2021-05-24 17:17:14 +08:00
    那就是 podman
    iblessyou
        5
    iblessyou  
    OP
       2021-05-24 17:24:39 +08:00
    @Ariver 工程量有点大,据我所知,公司现在没用过,时间紧,会出什么问题难预计。
    而且几个部门做的,加上数据库之类的第三方包,总共近 40 个,他们应该包不通用吧?
    patrickyoung
        6
    patrickyoung  
       2021-05-24 17:25:48 +08:00 via iPhone
    @iblessyou image 通用,redhat 做的,你们买 redhat 服务就行
    iblessyou
        7
    iblessyou  
    OP
       2021-05-24 17:31:06 +08:00
    @patrickyoung 必须还要买额外服务吗?
    Jirajine
        8
    Jirajine  
       2021-05-24 17:41:14 +08:00 via Android
    最简单稳定的方式就是镜像本身做适配,参考 linuxserver.io 的镜像。
    patrickyoung
        9
    patrickyoung  
       2021-05-24 18:00:43 +08:00 via iPhone
    @iblessyou 你要 podman,要 rootless,又不想背锅,又不想出钱,那怎么玩?
    patrickyoung
        10
    patrickyoung  
       2021-05-24 18:01:23 +08:00 via iPhone
    你要愿意背锅,那直接 podman 也行,反正 podman 免费,只是买 rh 的服务而已
    iblessyou
        11
    iblessyou  
    OP
       2021-05-24 18:37:03 +08:00
    @patrickyoung 呃,莫激动,可能你没理解我意思。
    我也只是个普通开发,能解决了解决。
    解决不了像换工具,需要花费这些,只要能尽可能了解下,给上面阐明问题解决方案,可能有什么坑就行。我就算有个满意交代了。
    需要怎么做由他们决定 ,对吧。
    bwangel
        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
    iblessyou
        13
    iblessyou  
    OP
       2021-05-27 11:08:10 +08:00
    @bwangel 呃,上面解释过了,不是容器内。
    用户是不会关心你容器里是什么的,说的是宿主机上打命令。
    他关心的是他服务器安全
    bwangel
        14
    bwangel  
       2021-05-27 14:08:49 +08:00
    @iblessyou 如果你能控制 dockerfile 的话,在 dockerfile 中指定以非 root 的用户运行 1 号进程,在宿主机上看到的进程也不会是 root 。

    docker 不是虚拟机,容器内的账户和宿主机的账户系统是共享的,容器内是什么账户运行,宿主机上也是这个账户。
    RexG
        15
    RexG  
       2021-07-06 16:16:29 +08:00
    @bwangel 他说的感觉像是宿主机上的 docker 服务不要用 root 运行吧?
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4123 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 00:59 PVG 08:59 LAX 17:59 JFK 20:59
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86