【发布时间】:2020-07-08 09:52:58
【问题描述】:
我有一个容器需要在启动时进行一些初始化,只能以 root 身份完成,但遵循良好做法我不希望容器以 root 身份运行。
我想我应该能够在容器内创建一个脚本,该脚本由 root 拥有并设置了 setuid 位。然后可以使用非 root 用户启动容器,通过执行脚本完成初始化,然后容器完成它需要做的事情。
这似乎不起作用。即使脚本归 root 所有并且设置了 setuid 位,初始化脚本仍以非 root 用户身份运行。
这应该有效吗?还有其他(更好的)方法吗?
我在 Mac 上使用 Docker for Desktop 运行。
我需要做的初始化是使用只能在运行时从容器内部确定的值更新 /etc/hosts - 特别是与 host.docker.internal 关联的 IP 地址。
我已经尝试在 Dockerfile 中让非 root 用户可以写入 /etc/hosts。那也行不通。 /etc/hosts 在 docker 文件中是挂载的卷,chmod 和 chown 似乎对正在运行的容器中的文件没有影响。
【问题讨论】:
标签: macos docker initialization root setuid