我们希望为开发人员提供基本映像(基本操作系统+ Java JRE)。由于这是一个偏执的组织,我们希望确保容器将始终使用应用程序ID(a.k.a。“app”)运行。在基础映像的Dockerfile末尾放置gcc
是不够的,因为派生映像的Dockerfile可以使用USER app
。是否有:
USER root
的方法,或者,使其失败USER root
语句的历史记录吗?或者可以以某种方式隐藏它(多级图像......))。 答案 0 :(得分:0)
如果您在没有其他措施的情况下授予用户访问Docker API的权限,例如"授权" (" authz")插件,这些用户在Docker守护程序运行的主机上有效拥有 root 权限; https://docs.docker.com/engine/security/security/#docker-daemon-attack-surface
您可以将守护程序配置为使用用户名称空间; https://docs.docker.com/engine/security/userns-remap/。使用用户命名空间时,容器内的用户将被重新映射"对于主机上没有特权的用户,容器内的root
是容器外的非特权用户。
在启用用户命名空间的情况下运行时存在一些限制,例如,当从主机绑定安装目录时,容器的进程可能无法访问/写入这些文件(取决于配置);这是设计上的,也是用户命名空间提供的部分保护,但可能是一个问题,具体取决于您的情况。