2015-10-29 1058 views
2

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

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

高于我的期望是否正确?

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

回答

1

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

您是否在群集中尝试使用防火墙?或者您是否试图抵御Google云计划的其他项目?或者你是否试图抵御互联网?

在一个集群中,假设(到目前为止)是运行的进程都在同一个空间中。我认为未来几个月我们会看到该领域的更多增长(网络政策),但这就是今天的情况,所以没有自动化的集成防火墙设置。

同样在Google Cloud项目中。

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

+0

我想抵御互联网,而不是其他机器在同一个项目内。我忘了使用GCP防火墙功能的最佳方式。 –

3

您不必在容器内启用或配置防火墙。

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

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

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