站長資訊網
最全最豐富的資訊網站

docker ping不通宿主機怎么辦

docker ping不通宿主機的解決辦法:1、修改daemon.json;2、關閉防火墻;3、修改sysctl.conf;4、重設網橋即可。

docker ping不通宿主機怎么辦

本文操作環境:ubuntu16.04系統、Docker 20.10.11、Dell G3電腦。

docker ping不通宿主機怎么辦?

Docker網橋模式ping不通宿主機

問題描述:

??Docker網絡模式分為四種,一般我們不設置時默認為bridge單橋模式,容器使用獨立的network Namespace,并連接到docker0虛擬網卡中。通過docker0網橋以及Iptables nat表配置與宿主機通信。
??此時在堡壘機上進行測試,利用busybox進行測試:

# 拉取鏡像 docker pull busybox # 運行容器 docker run -itd --name busy_bridge busybox

??指令docker network inspect bridge查看網絡:
docker ping不通宿主機怎么辦

??網路配置成功,進入容器內部,查看ip,可以看到已經分配ip,但是ping外部網絡時失敗,無法連接外部網絡:
docker ping不通宿主機怎么辦

??但是在自己本地或者阿里云上進行相同的測試發現能夠連通網絡,這是什么問題導致的呢?

問題分析:

??在網上找了一個資料后很多都是重啟docker,然后就能連上了,一般是因為修改了某個配置然后重啟起作用,這里并沒有什么作用。一般修改的分為幾種,以下一一試驗:

  1. 修改daemon.json

??容器無法訪問宿主機是因為網橋分配的網段和宿主機沖突了,需要修改daemon.json進行指定分配,使用指令vim /etc/docker/daemon.json進入后添加:

{"bip":"172.16.10.1/24"}

??雖然重啟docker并創建容器即可訪問,但是,原本堡壘機和容器分配的ip一點沖突也沒有,該方法不行。

  1. 關閉防火墻

??容器無法通過網橋訪問宿主機,也就無法訪問外網,可能是防火墻阻止訪問,可以關閉防火墻或者開啟某個端口。在服務器上測試,開啟防火墻,發現容器確實無法訪問百度首頁也確實無法訪問宿主機,在關閉防火墻并重啟docker后,容器就能正常訪問了。
??但是,堡壘機上的防火墻原本就是關閉的,該方法也沒用。

  1. 修改sysctl.conf

??docker主機內部網絡正常,與其它主機的連接失效,其它主機不能連接docker主機上映射的端口,docker內部也無法連接外部主機,利用docker info指令查看信息發現報錯如下:

WARNING: IPv4 forwarding is disabled WARNING: bridge-nf-call-iptables is disabled WARNING: bridge-nf-call-ip6tables is disabled

??使用指令vim /etc/sysctl.conf編輯配置文件,在文件中增加以下代碼:

net.bridge.bridge-nf-call-ip6tables=1 net.bridge.bridge-nf-call-iptables=1 net.bridge.bridge-nf-call-arptables=1 net.ipv4.ip_forward=1

??然后使用指令systemctl restart network重啟網絡,再次查看docker info,警告消失。但是依舊沒有用,堡壘機上的容器還是無法通過網橋訪問宿主機,無法訪問外網。

  1. 重設網橋

??在使用指令yum install bridge-utils安裝工具后,利用brctl show查看網橋,可以發現:
docker ping不通宿主機怎么辦
??利用docker network create [網橋名]指令新建網橋發現其生成的bridge id還是8000.0000000000,在新網橋上創建容器,再次查看并沒有什么變化,說明很可能是網橋的問題。
??再次測試,此時網橋ip172.17.0.1,容器ip172.0.0.2,發現宿主機能ping通網橋,但是無法連接容器,而容器無法連接網橋,無法連接宿主機,更別談外網了,所以這里可以肯定是網橋出了問題。

問題解決

??這里docker network生成新的網橋不行,說明dockernetwork存在問題,我們利用剛才下載的bridge-utils來創建網橋。
??首先暫停docker服務,利用指令:

service docker stop

??添加網橋:

brctl addbr br0

??添加ip字段:

ip addr add 172.16.0.1/24 dev br0

??啟用網橋br0

ip link set dev br0 up

??查看網絡br0
docker ping不通宿主機怎么辦

??修改docker默認網橋:

vim /etc/docker/daemon.json

??添加字段:

"bridge":"br0"

??重啟docker

service docker start

??此時查看網橋:
docker ping不通宿主機怎么辦

??在沒有掛載容器前,依舊是8000.000000000000。運行測試容器:

docker run -itd --name busy_test busybox

??查看網橋詳情:
docker ping不通宿主機怎么辦

??此時容器掛載在網橋上了,再次查看網橋id
docker ping不通宿主機怎么辦

??說明已經其作用,進入測試容器內部,測試外網:
docker ping不通宿主機怎么辦

??成功!
??補充:這里使用docker network新建網橋,沒有用,發現新建網橋掛載容器后,其bridge id依舊不變,沒有起作用,說明堡壘機上的docker network可能存在問題。

問題補充:

??上面的問題是創建自定義網橋,然后在自定義網橋上連接容器ab,結果宿主機無法pingab,且進入容器內部后,兩個容器無法ping通自定義網絡,但能彼此相通。
??查了很多資料,發現了這篇文章。博主說問題原因是系統內核的網橋模塊bridge.ko加載失敗導致,解決問題的方案是升級內核或升級系統。
??升級centos內核參考這篇。
??升級完成后,重裝Docker,自定義網橋和容器,成功!不再有網絡問題。

推薦學習:《docker視頻教程》

贊(0)
分享到: 更多 (0)
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
这里只有精品视频在线| 午夜精品久久久久蜜桃| 亚洲AV永久精品爱情岛论坛| 成人精品一区二区三区中文字幕| 成人精品综合免费视频| 日韩放荡少妇无码视频| 嘿嘿射久草日韩视频| 国产精品亚洲专区在线播放| 无码精品国产va在线观看dvd| 国产精品夜色一区二区三区| 欧乱色国产精品兔费视频| 88国产精品视频一区二区三区 | 亚洲精品韩国美女在线| 久99久热只有精品国产男同| 久久国产精品久久精| 久久精品国产亚洲av麻豆| 麻豆精品不卡国产免费看| 亚洲线精品一区二区三区影音先锋| 91精品国产福利尤物| 孩交VIDEOS精品乱子| 久久五月精品中文字幕| 精品视频在线观看你懂的一区| 国产精品青草视频免费播放 | 91精品国产综合久久四虎久久无码一级| 久久狠狠高潮亚洲精品| 久久久久久久精品妇女99| 国产成人精品福利网站在线| 99久久er这里只有精品18| 精品午夜福利无人区乱码一区| 波多野结衣久久精品| 久久精品日韩av无码| 日韩精品高清在线| 国产在线精品一区二区| 亚洲中文字幕无码日韩| 国产日韩视频在线| 国产VA免费精品高清在线| 国产精品免费一区二区三区| 91精品国产91久久久久福利| 国产精品高清一区二区三区 | 中日韩一区二区三区| 日韩中文字幕在线|