Centos8 安装 Docker 后容器端口无法访问

本贴最后更新于 1456 天前,其中的信息可能已经时移世易

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

额外要注意的一点是,如果你防火墙屏蔽了 icmpecho-request 请求,也就是我们说的禁止 Ping。那么在容器中 Ping 别人及其的时候也会被主机防火墙拦截下来,Ping 不通的哦。如果 Ping 不通可以使用 curl www.baidu.com 看看能不能访问得到百度页面,这样检测。

♐End Thanks!

  • CentOS

    CentOS(Community Enterprise Operating System)是 Linux 发行版之一,它是来自于 Red Hat Enterprise Linux 依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定的服务器以 CentOS 替代商业版的 Red Hat Enterprise Linux 使用。两者的不同在于 CentOS 并不包含封闭源代码软件。

    238 引用 • 224 回帖 • 1 关注
  • Docker

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的操作系统上。容器完全使用沙箱机制,几乎没有性能开销,可以很容易地在机器和数据中心中运行。

    475 引用 • 899 回帖 • 1 关注
  • firewalld
    4 引用 • 1 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...