1. 程式人生 > 其它 >docker容器訪問不了宿主機和外部內網伺服器

docker容器訪問不了宿主機和外部內網伺服器

 首先需要明確docker的網橋模式,網橋工作在二層(OSI堆疊),是通用網路裝置的一種,可以設定IP地址。有了IP地址,Linux便可通過路由表或IP表,在網路層定位網橋,這就相當於有了一個虛擬網絡卡,即docker0。docker0預設的地址劃分:IP(127.17.42.1/16),在啟動容器時,docker會在宿主機上建立一對虛擬網絡卡veth pair裝置。veth裝置總是成對出現的,它們組成了一個數據的通道,資料從一個裝置進入,就會從另一個裝置出來。因此,veth裝置常用來連線兩個網路裝置,容器啟動時,Docker引擎將veth pair裝置的一端放在新建立的容器中,並命名為eth0。另一端放在宿主機中,以veth***這樣類似的名字命名,並將這個網路裝置加入到docker0網橋中,可以通過brctl show命令檢視,從docker0子網中分配一個IP給容器使用,並設定docker0的IP地址為容器的預設閘道器。

問題:

解決方法:  (沒brctl命令 自行安裝 yum -y install bridge-utils  

1.刪除原有配置

1.systemctl  stop docker
2.ip link set dev docker0 down
3.brctl delbr docker0
3.iptables -t nat -F POSTROUTING

2.建立新網橋 

1.brctl addbr docker0
2.ip addr add 172.17.10.1/24 dev docker0
3.ip link set dev docker0 up

3.修改docker配置,在/etc/docker/daemon.json中追加bip如下. 注意json的格式,bip前面需要有 ","

4.重啟docker

systemctl restart docker

 參考:docker容器ping不通宿主機與外網問題排查及解決_Xiao阿的部落格-CSDN部落格_docker容器ping不通外網