【发布时间】:2021-02-17 17:07:40
【问题描述】:
我正在寻找一种方法来限制“主机”作为运行 Docker 映像的网络的访问。我一直在寻找几天,但找不到解决方案。 有没有办法限制 Docker 用户的网络访问?
例如删除主机选项并始终使用网桥作为网络,因此当您调用sudo docker network ls 时,输出只会是网桥而没有
或任何其他防止使用主机的方式。
【问题讨论】:
我正在寻找一种方法来限制“主机”作为运行 Docker 映像的网络的访问。我一直在寻找几天,但找不到解决方案。 有没有办法限制 Docker 用户的网络访问?
例如删除主机选项并始终使用网桥作为网络,因此当您调用sudo docker network ls 时,输出只会是网桥而没有
或任何其他防止使用主机的方式。
【问题讨论】:
一般来说,如果您可以运行任何docker 命令,您就可以无限制地访问 Docker 可以执行的所有操作,并通过它获得对主机系统的无限制根级别访问权限。没有(内置)方法可以限制 Docker 功能或阻止特定的docker run 选项。
原则上,可以编写某种通过Docker HTTP API但限制某些选项的HTTP代理(例如,如果包含"create a container" HTTP POST request,则返回带有正确格式JSON错误的HTTP 401状态代码一个不允许的 NetworkMode 值)。实施这本身就是一个重大项目,超出了 Stack Overflow 答案的范围。
【讨论】:
docker 命令执行的操作。 (您可以非常轻松地使用它来编辑主机的 /etc/sudoers 文件等。)您可能不想在多用户系统上授予 Docker 访问权限。
所以我找到了我的问题的解决方案(替代方案),我认为它可能会帮助其他有同样问题的人。如果您尝试在公共服务器上使用 docker,并且您不想让人们有可能使用网络托管(它与作为 root 用户基本相同),您可以使用“Singularity”。我已经尝试过了,它就像一个魅力。唯一需要时间的是,您无法在奇异环境中构建 docker 文件,因此您必须在本地构建它们,将它们推送到您的 docker-repo 并通过服务器上的奇异环境将它们拉出来。它可能会帮助希望保护服务器隐私的系统管理员,同时为人们提供使用 docker 的灵活性。
【讨论】: