Centos8 安装 Docker 后容器端口无法访问
从 CentOS 官方发行了 CentOS 8 后,安装了几个工具。其中 Docker 安装后,Docker 内容器,在防火墙关闭状态无法访问、firewalld 防火墙端口规则开放依然无法访问。处理下,作如下记录。
检查 iptables
接下来会清除 iptables 现有规则,如果你一直使用的是 firewalld
来管理你的防火墙,就没必要查看现有的 iptbales 规则了。
iptabels -L
关闭 firewalld 和 docker 服务
systemctl stop firewalld docker
清除现有防火墙规则
由于 docker 启动容器时会在 iptables 中添加规则,我们先把原来
iptables -P INPUT ACCEPT
先放行规则,非常重要!
否则 22 端口也就是你的 SSH 服务可能再也连不上了。
清除所有规则
iptables -F
开启端口转发
1、开启内核 IP 地址转发功能
首先查看内核是否开启 IP 地址转发功能
cat /proc/sys/net/ipv4/ip_forward
返回为 1 已开启,返回 0 则需要手动开一下。
复制到终端上!以 root 用户身份执行
echo "1" >> /etc/sysctl.conf
使更改立即生效
sysctl -p
2、防火墙放行 IP 地址转发
现在将 firewalld 服务启动
systemctl start firewalld
默认情况下 firewalld
会禁止转发流量,可以执行 firewall-cmd --query-masquerade
查看状态,应该是 no,请执行下面的命令开启转发。
永久开启 IP 地址转发
firewall-cmd --add-masquerade --permanent
重载防火墙规则,使之生效
firewall-cmd --reload
启动 Docker 服务
现在可以启动 docker 服务检查容器网络是否正常。
systemctl start docker
docker run -it --rm centos:latest ping baidu.com
额外要注意的一点是,如果你防火墙屏蔽了 icmp
的 echo-request
请求,也就是我们说的禁止 Ping。那么在容器中 Ping 别人及其的时候也会被主机防火墙拦截下来,Ping 不通的哦。如果 Ping 不通可以使用 curl www.baidu.com
看看能不能访问得到百度页面,这样检测。
♐End Thanks!
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于