【发布时间】:2016-05-15 19:04:05
【问题描述】:
我了解默认情况下会在自己的网络堆栈中创建一个 docker 容器。
我想在运行 docker 容器时使用--net host 标志以允许使用所有主机端口。
我知道的缺点:
- 在容器内运行的服务可能会与在同一端口上运行的其他容器中的其他服务发生冲突。
- 容器可以访问完整的网络堆栈。
我的问题是,当允许容器使用完整的网络堆栈时,安全影响是什么?
【问题讨论】:
-
重要的问题是,你为什么要这样做?这可能对它有更大的影响。
-
我创建了一个 Web 控制面板,用于管理 Docker 容器中的游戏服务器。基本上每个容器都运行一个 FTP 服务器和游戏服务器。我每台主机运行大约 50 个容器。需要打开端口的客户端安装模块。
-
从容器出站无论如何都可以工作。对于入站,端口映射效果非常好。
-
听起来你最终会从github.com/docker/docker/issues/2045 中受益,它在 Docker 1.10 中使用github.com/docker/docker/pull/15078 快速启动。让 Docker 自动指定映射的端口并让您的控制面板使用
docker update的 API 来动态添加端口(然后在控制面板中将它们显示给用户)可能是有意义的。但这并不能解决您的迫切需求。现在,对于这条路线,您必须为用户提供重新启动其容器以获取新端口的选项。
标签: docker security containers application-security