别人写好的Dockerfile,但是root运行的,里面有.sh和cron;我改为使用非root用户,跑起来提示cron权限问题。不怎么该怎么修改使用。
别来问我有啥意义了...
我寻思我懂了,还问个锤子..
懂得,有时间的,可以给大伙说说。非常感谢🙏
1
maocat 2021-02-20 09:05:02 +08:00 1
怎么还要在 docker 里面分用户吗,玩的也太细了
|
2
Tink 2021-02-20 09:09:04 +08:00
docker 里面的非 root 用户?
|
3
yonng 2021-02-20 09:45:59 +08:00
想在 docker 里直接跑那不是要跑个类似 crond 的进程么,那又要引入一个 init 进程。。。操作有点骚。。。
如果运行 docker 的宿主机固定直接加在宿主机上,如果依赖容器中的库或者程序可以通过 `docker exec` |
4
sadfQED2 2021-02-20 09:59:10 +08:00 via Android
Docker 里面还要分用户的意义是啥?
如果你非要分,应该得先用 root 账号启动 crond 进程,然后使用普通用户添加任务 |
5
ODD10 OP @maocat #1
查过,非 root 用户运行,这样会安全一些; docker 宿主机运行 top,你可以看到 docker 如果是使用 root,你可以看到 user 也是 root 。 https://i.loli.net/2021/02/20/wheki6dxjYzDJE3.jpg?width=828&height=1792 |
6
GuuJiang 2021-02-20 10:05:36 +08:00 via iPhone
docker 不是虚拟机
docker 不是虚拟机 docker 不是虚拟机 所以在 docker 里跑 cron 本身很可能就是个 XY 问题 |
7
ODD10 OP |
8
ODD10 OP @GuuJiang #6
词组:xy 释义:香烟, 夏颜, 谢迎, 徐逸, 闲鱼, 谢邀, 西柚, 小悦, 戏影, 谢俞, 信誉, 薛洋, 夏亚, 筱雨, 逍遥, 蟹圆, 熊樱, 星元, 性欲, 性瘾, 咸鱼, 小樱, 许呦, 渲言, 昕羊, 霞雅 所以 XY 是啥? |
9
wellsc 2021-02-20 10:08:46 +08:00
本身已经是个沙箱了,为啥还要细分权限
|
10
GuuJiang 2021-02-20 10:17:28 +08:00 via iPhone
@ODD10 这个随便一搜都能搜到的吧?“我想要解决 X 问题,我觉得应该用 Y 这种方式,于是向别人求助 Y 应该怎么做,但是实际上想要解决 X 并不应该用 Y”
|
11
julyclyde 2021-02-20 14:09:00 +08:00
systemd --user
不过觉得在 docker 里用 cron 属于需求就有问题的,不是怎么解决的问题 |
12
Tink 2021-02-20 14:11:25 +08:00
你应该考虑把 docker 以非 root 用户跑,可能还靠谱点
|
13
mxalbert1996 2021-02-20 14:15:58 +08:00 via Android
@GuuJiang @julyclyde
最近需要用 Docker 运行 Magento,请问如果不用 cron 实现? https://devdocs.magento.com/guides/v2.4/config-guide/cli/config-cli-subcommands-cron.html |
14
binux 2021-02-20 14:23:00 +08:00 via Android
@ODD10 除非你 mount 了 host 的文件系统,或者 nfs,docker 里面的用户和宿主的用户没有关系。你要添加账户也要找 docker 里面添加。
是,你可能看到 docker 用户的 UID 和宿主的重复的时候,top 出来的用户名是宿主的,但是它们真的没有什么关系,单纯就是 Linux 显示的问题。 你 mount 了文件系统那另说。 |
15
julyclyde 2021-02-20 14:35:54 +08:00
|
16
mxalbert1996 2021-02-20 14:46:44 +08:00 via Android
@julyclyde 你这话可真有意思,“不适合运行在容器里”的唯一理由就是需要 cron ? docker 里又不是不能运行 cron 我为么要因为这个舍弃容器化? Magento 提供开箱即用的 cron 集成,要不你帮我写一个 systemd.timer 集成?
|
17
BeautifulSoap 2021-02-20 14:51:53 +08:00 1
LZ 你这是真的想得多,查得少
docker 内的 root 虽然和宿主的 root 是同一用户,但默认情况下 Capabilities 是极其受限的,并不具有完整的 root 权限,不能访问系统的设备等资源,只能访问容器内部的资源,且无法逃逸出容器,一般情况下根本不需要特别担心安全问题,如果担心,可以将 docker 的默认启动用户从 root 换成普通用户 并且 docker 支持 user namespace,LZ 你如果追求绝对的安全,配置 user namespace 才是解决你安全顾虑的方法,你纠结容器内非 root 用户是找错方向了 https://docs.docker.com/engine/security/userns-remap/ |
18
ODD10 OP |
19
ODD10 OP |
20
BeautifulSoap 2021-02-20 15:46:32 +08:00
|
21
ODD10 OP |
22
julyclyde 2021-02-20 16:47:06 +08:00
@mxalbert1996 不适合在容器里有各种原因,cron 是其中之一。你这么坚定就慢慢搞呗,反正麻烦的不是我
|
23
BeautifulSoap 2021-02-20 16:49:06 +08:00 via Android
@ODD10 那么恭喜你你有可能发现了 Portainer 一个 bug,要么自己看 log 查找 bug 原因上报,要么去 GitHub 发 issue 求助
虽然不知道你打算怎么用 docker,使用 docke 内的 root 用户不会有大安全问题(比谁都注重安全的基于 docker 的各种云服务都能跑 root 用户要不安全早爆炸了),你既然如此顾虑不太着边际的安全问题的话就应该尽量想办法解决 user namespace 问题 |
24
2kCS5c0b0ITXE5k2 2021-02-20 16:53:31 +08:00
@ODD10 docker in docker.
|
25
mxalbert1996 2021-02-20 19:36:17 +08:00 via Android
@julyclyde 哈哈哈,docker 里运行 cron 只要一条命令就够了你居然说麻烦,真是笑死我了。另外关于不适合容器的原因我倒是想听听你的高见。
|
26
fatelight 2021-03-15 04:18:09 +08:00
CMD [ "crond" ]
|
27
dzdh 2021-03-29 19:33:58 +08:00
@BeautifulSoap 像 es 这种应用就是不允许使用 root 用户跑,拒绝被执行的呢?
|