Docker端口不受ufw防火墙限制解决方案

Docker端口不受ufw防火墙限制解决方案

安装docker

“iptables”: false, 禁用docker管理iptables规则。
default-address-pools 限制 docker使用的网络。(后面转发须用到)

mkdir -p /etc/docker
cat > /etc/docker/daemon.json <<EOF
{
  "iptables": false,
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m",
    "max-file": "5"
    },
  "default-address-pools": [
        {
            "base": "172.16.0.0/12",
            "size": 24
        }
    ]
}
EOF

ufw配置(解决容器内不能访问外网)

内核须要配置路由转发
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1

# 使用ufw开放路由转发
ufw default allow routed

# 编辑ufw规则文件在最上面添加如下规则。不添加情况下容器内无法访问外网。
vim /etc/ufw/before.rules

*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 172.16.0.0/12 ! -o docker0 -j MASQUERADE
COMMIT

# 上面添加规则对等下面命令
# iptables -t nat -A POSTROUTING -s 172.16.0.0/12 ! -o docker0 -j MASQUERADE

重启服务器后配置生效。

验证

docker run -d -p80:80 nginx

从另外主机访问80端口无法访问。
使用 ufw allow 80 开放80端口后能正常访问。

你可能感兴趣的:(docker,容器,运维)