让Docker和UFW和平相处

同时使用Docker和UFW(或者其他基于iptables得防火墙)会存在一些问题,

传统搞法是禁止docker更改iptables,但是这样docker得网路基本就废了。

根据最新得社区讨论,可以使用下面得工具进行解决

1 安装

https://github.com/chaifeng/ufw-docker

就是个脚本,clone下来就好

sudo ./ufw-docker install

2 启用某个docker得外网访问

上面工具安装完毕后,UFW就生效了,但是所有默认内网得docker容器都无法暴露给外网了

如果想让外网生效,如下操作:

# 允许nginx这个docker的80的tcp端口暴露给外网。
sudo ./ufw-docker allow nginx 80/tcp


# 允许xx容器得所有端口
sudo ./ufw-docker allow xx

一定注意这个80是nginx容器publish得端口,并不是容器内部端口哦!

3 其他管理

# 查看状态
sudo ./ufw-docker status

需要注意得是:

  • 如果docker得IP发生变化,可能需要重新更新ufw-docer得防火墙规则。
  • 如果上面这个让你不爽,可以docker建一个网络,然后使用固定IP
  • 如果你得docker容器里自己设定了一些奇怪得iptables,可能需要在ufw中也设置allow一下。

Leave a Reply

Your email address will not be published. Required fields are marked *