Docker: 如何给本地用户root权限?

Docker: How to give root permissions for the local user?

我 运行 是 Docker 中的一个这样的人:

docker run --user $(id -u):$(id -g) --rm --network=host -v `pwd`:${SRC_MOUNT_DIR} my-image:latest my-build-script.sh

我将本地用户设置为 --user 以避免 root 拥有的文件出现在我的主目录中。

现在,问题是我需要在我的构建脚本中使用 sudo apt install 来安装一些其他构建的依赖项,但这需要 root。

我该如何安排?我猜不可能让 sudo 在没有密码的情况下为所有可能的用户工作..?

如果您容器内的用户可以 运行 sudo apt install ... 那么您也可以 运行 容器中的所有内容作为 root,因为任何攻击都可以 sudo ... 任何攻击代码。相反:

  • 考虑是否需要 apt install 在容器内,或者是否可以在图像中这样做。最好在映像中安装二进制文件并部署它们,而不是每次 运行 容器时都重新安装应用程序。

  • 如果您有一个在启动时需要 root 的用例,请以 root 身份启动您的容器,然后在完成这些 root 步骤后交给用户。 gosu 之类的工具就是为此而设计的。对于执行此操作的入口点示例,我有一个带有 entrypoint script 的 docker 基础图像,它添加了 gosu 和 运行s 带有 [=15= 的 CMD ] 以避免 /bin/sh 作为 pid 1(这有助于信号处理)。

可以在以下位置找到 Gosu:https://github.com/tianon/gosu