没有从主机到 docker 容器的网络
No networking from host to docker container
我有一台 CentOS 7.2 主机 运行 Docker 19.03。所有 docker 个容器都在桥接网络 (172.18.0.0/16) 中。
我可以从主机 ping 网关 (172.18.0.1) 但不能 ping 我的容器(172.18.0.2 和 172.18.0.3)。从我的容器中,我也可以 ping 网关,但不能 ping 我的主机。
桥接网络已经基本默认配置了。但是还有什么我想念的吗?
Docker 使用 iptables
和一个名为 br_netfilter
的内核模块来管理容器间网络。当 Docker 守护进程启动时,它会创建运行所需的各种 IPTables 规则。每次提供新容器时,都会创建和操作其他规则。如果 iptables 处于异常状态、已被您修改或未安装,这可能会导致您的问题。
我在上面提到了br_netfilter
。以类似的方式运作。您可以使用 lsmod
命令确认内核模块已加载。例如:lsmod | grep br_netfilter
。如果未加载,则可以使用 modprobe 加载它。例如:modprobe br_netfilter
。如果它不可用,则内核模块未安装在您编译的内核中。如果您在 运行 modprobe
中成功加载了模块,那么您将需要修改 /etc/modprobe.conf
或在 /etc/modprobe.d
中删除一个文件以确保内核模块在重启之间的持久性。
我有一台 CentOS 7.2 主机 运行 Docker 19.03。所有 docker 个容器都在桥接网络 (172.18.0.0/16) 中。 我可以从主机 ping 网关 (172.18.0.1) 但不能 ping 我的容器(172.18.0.2 和 172.18.0.3)。从我的容器中,我也可以 ping 网关,但不能 ping 我的主机。
桥接网络已经基本默认配置了。但是还有什么我想念的吗?
Docker 使用 iptables
和一个名为 br_netfilter
的内核模块来管理容器间网络。当 Docker 守护进程启动时,它会创建运行所需的各种 IPTables 规则。每次提供新容器时,都会创建和操作其他规则。如果 iptables 处于异常状态、已被您修改或未安装,这可能会导致您的问题。
我在上面提到了br_netfilter
。以类似的方式运作。您可以使用 lsmod
命令确认内核模块已加载。例如:lsmod | grep br_netfilter
。如果未加载,则可以使用 modprobe 加载它。例如:modprobe br_netfilter
。如果它不可用,则内核模块未安装在您编译的内核中。如果您在 运行 modprobe
中成功加载了模块,那么您将需要修改 /etc/modprobe.conf
或在 /etc/modprobe.d
中删除一个文件以确保内核模块在重启之间的持久性。