我必须在docker集装箱上启用防火墙吗?

我想知道是否需要在容器中启用防火墙。 (客户操作系统)

在传统的IaaS(如GCE和Amazon EC2)上,您必须configuration防火墙。 (在CentOS 6上的iptables,在7上的firewalld,在Ubuntu上的ufw)然而,Dockerfile有EXPOSE ,我猜Docker除了在Dockerfile中声明的端口外,拒绝了对所有端口的访问。

高于我的期望是否正确?

注意:这是关于容器(来宾操作系统)内的操作系统,而不是Docker主机。 因为我正在使用Google Container Engine,所以我的兴趣仅限于现在的客人。

这取决于你想要防火墙的人。 既然你特意说了容器引擎,Bryan上面的答案是不适用的。

你正在尝试在你的群集内进行防火墙吗? 或者,您是否正试图抵御Google Cloud项目的其余部分? 还是你试图抵御互联网?

在一个集群中,假设(到目前为止)是运行的进程都在同一个空间。 我认为未来几个月我们会看到在这方面有更多的增长(networking政策),但现在是这样,所以没有自动化的集成防火墙设置。

同样在Google Cloud项目中

关于互联网,你应该有你的云防火墙closures任何你不明确需要揭露给世界。 这应该是默认的。 检查云控制台,如果你不确定这一点。 当您使用Kubernetes公开服务时,我们会自动为您打开防火墙。

您不必在容器中启用或configuration防火墙。

关键的原因是Docker已经为每个容器和发布的端口添加了iptables规则,并且如果需要的话,Docker与firewalld进行通信。 (iptables,ufw和firewalld都提供了netfilter底层实现的一个视图,内部都是一样的)。

请注意,没有“客户操作系统”; 容器内的所有内容都与外部相同的内核运行。 也许有一些不同的用户级工具,但不是一个单独的操作系统。

此外,Docker不会安装任何规则来阻止未公开的端口。