有许多Docker安全功能可用于解决Docker安全问题。可以帮助您的特定名称是User Namespaces。
基本上,您需要在预先停止Docker守护程序的情况下在主机上启用用户命名空间:
dockerd --userns-remap=default &
请注意,这将禁止容器在特权模式下运行(从安全角度考虑,这是一件好事),并重新启动Docker守护进程(应在执行此命令之前将其停止)。当您输入Docker容器时,可以将其限制为当前非特权用户:
docker run -it --rm -v /bin:/tmp/a --user UID:GID debian
无论如何,请稍后尝试使用默认命令输入Docker容器
docker run -it --rm -v /bin:/tmp/a debian
如果您尝试操纵映射到Docker卷的主机文件系统(在本例中为
/bin),其中文件和目录由root拥有,那么您将收到一个
Permissiondenied错误。这证明用户命名空间提供了您要寻找的安全功能。
我建议通过https://github.com/docker/labs/tree/master/security/userns上的此安全功能进行Docker实验。我已经完成了所有实验室的工作,并在那里开设了Issues和PR,以确保那里实验室的完整性并可以为其提供担保。



