您可以在 Internet 上找到的大多数 Dockerfile 都以 root 身份构建和运行软件!这一定吓到大家了吧?……但好像不是这样的……
所以 pb 就是以 root 身份运行服务器,即使在容器中也是危险的,因为容器内的 root 与容器外的 root 完全相同。
解决方案之一是通过使用“USER”指令正确构建 Dockerfile,例如 Tor 中继。
另一种解决方案是使用“linux 用户命名空间”将容器内的 UID/GID“映射”到容器外的 UID/GID。例如,容器内的 root (uid=0) 可以映射到您在主机内的个人用户帐户,因此在共享卷中创建的文件具有良好的权限。
所以我的问题是:关于 Docker 的安全性,最佳实践是什么?以非 root 身份运行代码(即 Dockerfile 中的 USER 指令)?或者通过使用“用户命名空间”?或者最终(或另外)使用 selinux 和/或 AppArmor ?
谢谢 :)