大部分在互联网上找到的 Dockerfile 都是以 root 用户身份构建和运行软件的!这一定会让每个人都感到害怕,对吧?但实际情况似乎并非如此。
问题在于,即使在容器中,以 root 用户身份运行服务器也很危险,因为容器内的 root 用户与容器外的 root 用户几乎相同。
解决方案之一是通过使用“USER”指令来正确构建 Dockerfile,例如此 tor 中继示例。
另一个解决方案是使用“Linux 用户命名空间”将容器内的 UID/GID 映射到容器外的 UID/GID。例如,在主机中,容器内的 root(uid=0)可以映射到您的个人用户帐户,因此在共享卷中创建的文件具有良好的权限。
那么我的问题是:在 Docker 安全性方面,最佳实践是什么?作为非 root 用户运行代码(即在 Dockerfile 中使用 USER 指令)?还是使用“用户命名空间”?或者最好同时使用 selinux 和/或 AppArmor?
谢谢 :)
问题在于,即使在容器中,以 root 用户身份运行服务器也很危险,因为容器内的 root 用户与容器外的 root 用户几乎相同。
解决方案之一是通过使用“USER”指令来正确构建 Dockerfile,例如此 tor 中继示例。
另一个解决方案是使用“Linux 用户命名空间”将容器内的 UID/GID 映射到容器外的 UID/GID。例如,在主机中,容器内的 root(uid=0)可以映射到您的个人用户帐户,因此在共享卷中创建的文件具有良好的权限。
那么我的问题是:在 Docker 安全性方面,最佳实践是什么?作为非 root 用户运行代码(即在 Dockerfile 中使用 USER 指令)?还是使用“用户命名空间”?或者最好同时使用 selinux 和/或 AppArmor?
谢谢 :)