[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