我是否必须在docker容器上启用防火墙?

时间:2015-10-29 06:41:43

标签: docker google-kubernetes-engine

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

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

高于我的期望是否正确?

注意:这是关于容器(Guest OS)中的OS,而不是Docker主机。因为我正在使用Google容器引擎,所以我现在只关心客户。

2 个答案:

答案 0 :(得分:3)

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

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

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

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

答案 1 :(得分:1)

这取决于你想要防火墙的人。由于您特别提到了Container Engine,因此Bryan的上述答案不适用。

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

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

同样在Google Cloud项目中。

关于互联网,您应该关闭云防火墙,以防止您明确需要向世界展示的任何内容。这应该是默认值。如果您不确定,请检查云控制台。当您使用Kubernetes公开服务时,我们会自动为您打开防火墙。