[root@walker-1 tensorflow]# docker run --rm -it 285396d0a019 sh
WARNING: IPv4 forwarding is disabled. Networking will not work.
sh-4.2#
通过docker run 启动容器后,提示
WARNING : IPv4 forwarding is disabled. Networking will not work.
同时在容器中,无法访问外部网络。
根据提示很容易看到,主机上的报文转发被禁止了。导致容器报文被丢弃。
默认情况下,通过docker run
启动的容器其网络模式为 bridge
。容器将docker0
网桥作为网关,通过报文转发和主机路由实现对外部网络访问。
出于安全考虑,Linux系统默认是禁止数据包转发的。所谓转发即当主机拥有多于一块的网卡时,其中一块收到数据包,根据数据包的目的ip地址将数据包发往本机另一块网卡,该网卡根据路由表继续发送数据包。
[root@walker-1 tensorflow]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 172.16.6.254 0.0.0.0 UG 0 0 0 eth0
172.16.6.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
通过以下操作可解决上述问题:
[root@walker-1 tensorflow]# echo 1 > /proc/sys/net/ipv4/ip_forward
或者修改 /etc/sysctl.conf
, 添加
net.ipv4.ip_forward=1
为了使修改生效,执行:
[root@walker-1 tensorflow]# sysctl -p