configurationiptables来保护运行Docker容器的服务器

我尝试使用Docker运行2个容器(问题不是特定于他们):

  • MySQL(官方容器)
  • Redmine(官方集装箱)

每个容器都有一个转发的端口:

  • MySQL: 127.0.0.1:3000 -> 3000/tcp
  • Redmine: 127.0.0.1:3306 -> 3306/tcp

正如你所看到的,目标是让他们只能在主机内访问。

一个Nginx服务器(不是通过Docker安装的)侦听端口80,并将任何请求redirect到Redmine容器端口(使用代理function: proxy_pass等)。

所有这一切完美的作品,当我去服务器IP,我可以访问Redmine。

但是,我想要使用iptables添加一些安全性。 所以,目标是:

  • 全部默认删除(这一点是确定的)
  • 允许Docker只在本地主机中生成业务
  • 允许容器访问互联网(下载依赖关系,更新…)
  • 允许访问SSH和Nginx(也可以)

首先,我尝试添加--iptables=false选项来停止--iptables=false搞乱我的iptables。 重启后,我认为,用干净的iptables(所有的政治默认设置为ACCEPT ,所以没有任何事情完成),一切都会工作。 但事实并非如此,我得到了来自Nginx的"502 Bad Gateway"响应。 我不明白为什么不添加额外的规则,如果Docker无法工作(如果全部是开放的,它应该工作…不是?)。

我试图阅读有关Docker中高级networking的文档,我也尝试了多个教程,但是我找不到阻塞Docker的东西:

  • https://fralef.me/docker-and-iptables.html
  • https://docs.docker.com/v1.8/articles/networking/

我不是一个Linux / Docker / SysAdmin专家,所以也许,对于你们中的一些人来说,这是显而易见的(至less我希望!)。

不要犹豫,如果需要更多的细节问。

预先感谢您的回答。