跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • docker 非 root,怎么玩 cron?
未分類
11 2 月 2021

docker 非 root,怎么玩 cron?

docker 非 root,怎么玩 cron?

資深大佬 : ODD10 4

怎么还要在 docker 里面分用户吗,玩的也太细了
大佬有話說 (24)

  • 資深大佬 : maocat

    docker 里面的非 root 用户?

  • 資深大佬 : Tink

    想在 docker 里直接跑那不是要跑个类似 crond 的进程么,那又要引入一个 init 进程。。。操作有点骚。。。

    如果运行 docker 的宿主机固定直接加在宿主机上,如果依赖容器中的库或者程序可以通过 `docker exec`

  • 資深大佬 : yonng

    Docker 里面还要分用户的意义是啥?

    如果你非要分,应该得先用 root 账号启动 crond 进程,然后使用普通用户添加任务

  • 資深大佬 : sadfQED2

    @maocat #1
    查过,非 root 用户运行,这样会安全一些; docker 宿主机运行 top,你可以看到 docker 如果是使用 root,你可以看到 user 也是 root 。
    https://i.loli.net/2021/02/20/wheki6dxjYzDJE3.jpg?width=828&height=1792

  • 主 資深大佬 : ODD10

    docker 不是虚拟机
    docker 不是虚拟机
    docker 不是虚拟机

    所以在 docker 里跑 cron 本身很可能就是个 XY 问题

  • 資深大佬 : GuuJiang

    @sadfQED2 #4
    提高安全性,我也不懂。
    我先宿主机添加用户,再在 Dockerfile 配置添加使用用户,uid 、gid 啥的都要一致。
    我想既然存在,就有它的意义。

  • 主 資深大佬 : ODD10

    @GuuJiang #6
    词组:xy
    释义:香烟, 夏颜, 谢迎, 徐逸, 闲鱼, 谢邀, 西柚, 小悦, 戏影, 谢俞, 信誉, 薛洋, 夏亚, 筱雨, 逍遥, 蟹圆, 熊樱, 星元, 性欲, 性瘾, 咸鱼, 小樱, 许呦, 渲言, 昕羊, 霞雅

    所以 XY 是啥?

  • 主 資深大佬 : ODD10

    本身已经是个沙箱了,为啥还要细分权限

  • 資深大佬 : wellsc

    @ODD10 这个随便一搜都能搜到的吧?“我想要解决 X 问题,我觉得应该用 Y 这种方式,于是向别人求助 Y 应该怎么做,但是实际上想要解决 X 并不应该用 Y”

  • 資深大佬 : GuuJiang

    systemd –user

    不过觉得在 docker 里用 cron 属于需求就有问题的,不是怎么解决的问题

  • 資深大佬 : julyclyde

    你应该考虑把 docker 以非 root 用户跑,可能还靠谱点

  • 資深大佬 : Tink

    @GuuJiang @julyclyde
    最近需要用 Docker 运行 Magento,请问如果不用 cron 实现?
    https://devdocs.magento.com/guides/v2.4/config-guide/cli/config-cli-subcommands-cron.html

  • 資深大佬 : mxalbert1996

    @ODD10 除非你 mount 了 host 的文件系统,或者 nfs,docker 里面的用户和宿主的用户没有关系。你要添加账户也要找 docker 里面添加。
    是,你可能看到 docker 用户的 UID 和宿主的重复的时候,top 出来的用户名是宿主的,但是它们真的没有什么关系,单纯就是 Linux 显示的问题。
    你 mount 了文件系统那另说。

  • 資深大佬 : binux

    @mxalbert1996 你有没有考虑过并不是所有软件都适合在容器里运行的?

    另外你也可以试试在 user 级运行 systemd.timer

  • 資深大佬 : julyclyde

    @julyclyde 你这话可真有意思,“不适合运行在容器里”的唯一理由就是需要 cron ? docker 里又不是不能运行 cron 我为么要因为这个舍弃容器化? Magento 提供开箱即用的 cron 集成,要不你帮我写一个 systemd.timer 集成?

  • 資深大佬 : mxalbert1996

    LZ 你这是真的想得多,查得少

    docker 内的 root 虽然和宿主的 root 是同一用户,但默认情况下 Capabilities 是极其受限的,并不具有完整的 root 权限,不能访问系统的设备等资源,只能访问容器内部的资源,且无法逃逸出容器,一般情况下根本不需要特别担心安全问题,如果担心,可以将 docker 的默认启动用户从 root 换成普通用户

    并且 docker 支持 user namespace,LZ 你如果追求绝对的安全,配置 user namespace 才是解决你安全顾虑的方法,你纠结容器内非 root 用户是找错方向了
    https://docs.docker.com/engine/security/userns-remap/

  • 資深大佬 : BeautifulSoap

    @binux #14
    肯定挂载了文件呐
    UID 不一样,就没权限读写之类
    所以我在宿主机修改文件用户权限

  • 主 資深大佬 : ODD10

    @BeautifulSoap #17
    我用过这个,Portainer 就没办法工作了,又多一个坑,还得加 host 排除。
    我就想知道有什么好办法玩 cron

  • 主 資深大佬 : ODD10

    @ODD10 请: https://github.com/portainer/portainer/issues/662

    总结:cron 直接 root 跑

  • 資深大佬 : BeautifulSoap

    @BeautifulSoap #20
    这个中午看过,那些方案都没试;我直接关了 namespase 。
    能用普通用户的用普通用户,然后全上 cap_drop ALL

  • 主 資深大佬 : ODD10

    @mxalbert1996 不适合在容器里有各种原因,cron 是其中之一。你这么坚定就慢慢搞呗,反正麻烦的不是我

  • 資深大佬 : julyclyde

    @ODD10 那么恭喜你你有可能发现了 Portainer 一个 bug,要么自己看 log 查找 bug 原因上报,要么去 GitHub 发 issue 求助

    虽然不知道你打算怎么用 docker,使用 docke 内的 root 用户不会有大安全问题(比谁都注重安全的基于 docker 的各种云服务都能跑 root 用户要不安全早爆炸了),你既然如此顾虑不太着边际的安全问题的话就应该尽量想办法解决 user namespace 问题

  • 資深大佬 : BeautifulSoap

    @ODD10 docker in docker.

  • 資深大佬 : emeab

    @julyclyde 哈哈哈,docker 里运行 cron 只要一条命令就够了你居然说麻烦,真是笑死我了。另外关于不适合容器的原因我倒是想听听你的高见。

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具