![Docker 容器可以访问主机吗?如果可以,我该如何确保它不能访问主机?](https://linux22.com/image/688744/Docker%20%E5%AE%B9%E5%99%A8%E5%8F%AF%E4%BB%A5%E8%AE%BF%E9%97%AE%E4%B8%BB%E6%9C%BA%E5%90%97%EF%BC%9F%E5%A6%82%E6%9E%9C%E5%8F%AF%E4%BB%A5%EF%BC%8C%E6%88%91%E8%AF%A5%E5%A6%82%E4%BD%95%E7%A1%AE%E4%BF%9D%E5%AE%83%E4%B8%8D%E8%83%BD%E8%AE%BF%E9%97%AE%E4%B8%BB%E6%9C%BA%EF%BC%9F.png)
我原以为这个问题之前已经有人问过了,但是我在谷歌上搜索了很多次却找不到一个简单的答案,所以如果这个问题已经得到回答的话我很抱歉。
本质上,我计划提供一项服务,允许用户在我的 docker 主机上运行 docker 容器。用户可以选择我提供的容器之一,也可以提供他们自己的容器(未经审核)。他们还可以在容器内运行他们选择的 bash 命令。我需要限制他们只能在容器内运行代码,而不能访问主机或任何其他同时运行的容器。容器应该被允许完全访问互联网,主机需要与容器共享一个目录。我最初会向 docker 容器提供一些数据文件,一旦容器完成了用户想要的操作,我就需要在那时再次访问这些数据文件。
从安全角度来看我需要注意什么?谢谢你的帮助。
答案1
Docker 中运行容器的默认 CLI 应该是安全的,不受容器命令上下文的限制,并且不能在主机上执行容器之外的任何操作。
您需要注意传递给该命令的任何选项。如果用户可以访问 docker CLI 本身,他们可以控制主机(例如,docker run -v /:/target debian /bin/bash
将授予 root shell 访问 /target 处的主机文件系统的权限,他们可以在其中修改 /etc/passwd 或计算机上的任何其他文件)。
容器默认无法阻止的唯一事情是 DoS 攻击,容器可能会对您的服务器进行分叉轰炸。为此,您需要查看可以作为运行命令的一部分添加的内存和 CPU 限制。