0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Docker 網(wǎng)絡(luò) IP 地址沖突如何解決

dyquk4xk2p3d ? 來(lái)源:良許Linux ? 2023-06-26 10:17 ? 次閱讀

Docker 網(wǎng)絡(luò) IP 地址沖突這個(gè)問(wèn)題其實(shí)稍微有一點(diǎn)點(diǎn)麻煩,網(wǎng)上也沒(méi)有看到有比較全面正確的文章, 值得單獨(dú)寫一篇記錄一下。

1前置知識(shí)

因?yàn)?a target="_blank">交換機(jī)的能力有限制,以及網(wǎng)線的連接不可能無(wú)限長(zhǎng), 所以我們不可能把所有的主機(jī)都連到同一個(gè)交換機(jī)上,然后處于同一個(gè)二層網(wǎng)絡(luò)中。

就算能,主機(jī)間的 ARP 廣播也會(huì)讓這個(gè)網(wǎng)絡(luò)瞬間癱瘓。

所以我們得把主機(jī)拆分到一個(gè)個(gè)的小的子網(wǎng)里,然后通過(guò)路由器再并成三層網(wǎng)絡(luò)。

我們俗稱的 IP 地址其實(shí)由兩個(gè)部分組成,網(wǎng)絡(luò)地址和主機(jī)地址。比如10.0.0.1/8中,第一個(gè)10是網(wǎng)絡(luò)地址,后面的0.0.1是主機(jī)地址。那我怎么知道怎么去拆分這兩段呢?靠的就是子網(wǎng)掩碼,也就是那個(gè)/8。

IP 其實(shí)是由 32 位的二進(jìn)制組成的,x.x.x.x只是為了方便人類閱讀將其轉(zhuǎn)成了十進(jìn)制。有個(gè)簡(jiǎn)單粗暴的辦法就是可以認(rèn)為每一段都是 8 位,所以/8就代表第一段是網(wǎng)絡(luò)地址。

同理,/16就代表前兩段都是網(wǎng)絡(luò)地址,10.0.0.0/16中, 網(wǎng)絡(luò)地址是10.0,后兩位0.0代表每個(gè)子網(wǎng)中的主機(jī)地址。

比如10.0.0.1/16和10.0.0.2/16是同一個(gè)子網(wǎng)的兩個(gè)主機(jī)。10.0.0.1/16和10.1.0.1/16是不同的子網(wǎng)的兩個(gè)主機(jī)。

這里只是簡(jiǎn)單粗暴的介紹下,更多的信息還是自己去查資料了解學(xué)習(xí)。

2問(wèn)題表現(xiàn)

docker 進(jìn)程無(wú)法啟動(dòng)

容器端口無(wú)法訪問(wèn),抓包顯示為有入站但是沒(méi)有出站

3排查

此處針對(duì)的是 dockerd 無(wú)法啟動(dòng)的情況,如果 dockerd 能啟動(dòng),可以直接跳到解決一節(jié)

首先是看下日志

$systemctlstatusdocker
$journalctl-udocker
$dmesg|grepdocker

一般能看到如下日志:

docker0:linkisnotready
docker_gwbridge:linkisnotready

或者更簡(jiǎn)單的排查方法,直接手動(dòng)啟動(dòng) dockerd 看看。啟動(dòng)方法可以通過(guò)grep ExecStart /usr/lib/systemd/system/docker.service查看。

一般來(lái)說(shuō)按如下執(zhí)行就行:

$/usr/bin/dockerd--debug

然后能看到最后輸出:

INFO[2021-07-29T0255.811673622Z]stoppingeventstreamfollowinggracefulshutdownerror=""module=libcontainerdnamespace=moby
failedtostartdaemon:Errorinitializingnetworkcontroller:listbridgeaddressesfailed:PredefinedLocalScopeDefaultNetworksList:[10.252.0.0/2410.252.1.0/2410.252.2.0/24]:noavailablenetwork

這時(shí)候可以看下ip addr,是否有docker0和docker_gwbridge,

如果發(fā)現(xiàn)沒(méi)有docker0,那基本可以肯定是 docker0 無(wú)法創(chuàng)建導(dǎo)致 dockerd 啟動(dòng)失敗了。

4解決

找到占用的網(wǎng)段

默認(rèn)的 docker0 網(wǎng)段是172.17.0.0/16,docker_gwbridge 網(wǎng)段是172.18.0.0/24,你需要確認(rèn)下這兩個(gè)網(wǎng)段是否被占用了。

最簡(jiǎn)單的方法就是 ping 一下,如果無(wú)響應(yīng)的話,那么就說(shuō)明沒(méi)有被占用。

其次就是看一下本機(jī)的路由表route -n,確認(rèn)一下有沒(méi)有沖突的段。一般來(lái)說(shuō),你會(huì)發(fā)現(xiàn)相關(guān)網(wǎng)段要么已經(jīng)被占用,要么是路由表里存在沖突。

案例

比如在我的環(huán)境里,我給 docker0 配置為10.252.0/24,然后 dockerd 起不來(lái)。

排查后發(fā)現(xiàn)route -n里有這么一條:

10.0.0.0172.21.0.1255.0.0.0UG000eth0

也就是說(shuō)10/8被占用了,導(dǎo)致和我的10.252.0/24沖突。后來(lái)聯(lián)系網(wǎng)管刪除了這條10/8的路由后解決。

修改 docker 占用的網(wǎng)段

以下操作需要先停止 docker 進(jìn)程

$systemctlstopdocker

如果你用 docker service,那么 docker 會(huì)占用四個(gè)網(wǎng)段:

docker0

docker_gwbridge

ucp(docker engine 占用,不常見(jiàn))

ingress

其中前三個(gè)的網(wǎng)段可以通過(guò)配置文件配置,第四個(gè)只能手動(dòng)創(chuàng)建。

前三個(gè)網(wǎng)段會(huì)讀取/etc/docker/daemon.json這個(gè)配置文件, 這個(gè)文件默認(rèn)是沒(méi)有的,需要手動(dòng)創(chuàng)建。

{
"bip":"",
"default-address-pools":[
{"base":"10.252.0.0/24","size":24},
{"base":"10.252.1.0/24","size":24},
{"base":"10.252.2.0/24","size":24}
]
}

注意這個(gè)default-address-pools至少要有兩項(xiàng),按順序依次為:

docker0

docker_gwbridge

ucp

以防萬(wàn)一的話,配置三個(gè)是最好的。

接下來(lái)是修改 ingress,這個(gè)比較麻煩,需要手動(dòng)創(chuàng)建。

我的辦法是在初始化 docker swarm 以后,啟動(dòng) docker stack/service 以前,執(zhí)行以下腳本:

刪除 ingress

刪除 my-ingress(不一定存在,不存在就忽略)

新建 my-ingress

$yes'y'|dockernetworkrmingress
$yes'y'|dockernetworkrmmy-ingress2>&1|true
$dockernetworkcreate
--driveroverlay
--ingress
--subnet=10.252.3.0/24#指定ingress的網(wǎng)段,不要和上面daemon.json的網(wǎng)段沖突
--gateway=10.252.3.2
--optcom.docker.network.driver.mtu=1200
my-ingress

ingress 是默認(rèn)名,之所以新建一個(gè)名字不一樣的,是因?yàn)閯h除 ingress 是異步的。如果你刪除 ingress 后立刻新建一個(gè)也叫 ingress 的網(wǎng)絡(luò),很可能會(huì)報(bào)一個(gè)重名的錯(cuò)誤。

重啟 docker 前,最好先清理一下 docker 的緩存:

$iplinkdeldevdocker0
$iplinkdeldevdocker_gwbridge
$rm-rf/var/lib/docker/network

另一種粗糙簡(jiǎn)單的解決辦法

另一種粗糙簡(jiǎn)單的解決辦法就是干脆直接手動(dòng)創(chuàng)建一個(gè) docker0。

這種解決方法最簡(jiǎn)單,但是機(jī)器 reboot 后 docker0 會(huì)自動(dòng)被刪掉, 所以這方法并不持久。

而且,實(shí)際上也不一定能解決網(wǎng)段沖突的問(wèn)題,只是說(shuō) docker 能啟動(dòng)了而已。

iplinkaddnamedocker0typebridge
ipaddradddevdocker010.252.0.1/24




聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • IP
    IP
    +關(guān)注

    關(guān)注

    5

    文章

    1610

    瀏覽量

    149245
  • 網(wǎng)絡(luò)地址
    +關(guān)注

    關(guān)注

    0

    文章

    16

    瀏覽量

    9383
  • Docker
    +關(guān)注

    關(guān)注

    0

    文章

    453

    瀏覽量

    11792

原文標(biāo)題:Docker 網(wǎng)絡(luò) IP 地址沖突了,該怎么辦呢?

文章出處:【微信號(hào):良許Linux,微信公眾號(hào):良許Linux】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    個(gè)人和局域網(wǎng)IP地址沖突解決方案

    隨著網(wǎng)絡(luò)的廣泛應(yīng)用,使網(wǎng)絡(luò)規(guī)模不斷擴(kuò)大,相應(yīng)的IP地址分配也在不斷增多,IP地址
    的頭像 發(fā)表于 12-13 09:58 ?1173次閱讀
    個(gè)人和局域網(wǎng)<b class='flag-5'>IP</b><b class='flag-5'>地址</b><b class='flag-5'>沖突</b>解決方案

    軟交換網(wǎng)絡(luò)中接入層設(shè)備IP地址沖突現(xiàn)象分析

    簡(jiǎn)要介紹IP網(wǎng)絡(luò)中Ping to death攻擊的基本現(xiàn)象;對(duì)軟交換網(wǎng)絡(luò)接入層設(shè)備進(jìn)行描述,重點(diǎn)對(duì)軟交換網(wǎng)絡(luò)中接入層設(shè)備IP
    發(fā)表于 05-16 10:06 ?11次下載

    基于校園網(wǎng)絡(luò)IP地址沖突解決方案

    隨著高校數(shù)字化校園網(wǎng)絡(luò)的廣泛應(yīng)用,校內(nèi)機(jī)器增多,無(wú)線網(wǎng)絡(luò)的覆蓋,相應(yīng)的IP地址分配也在不斷增多,IP地址
    發(fā)表于 12-12 17:59 ?0次下載
    基于校園<b class='flag-5'>網(wǎng)絡(luò)</b><b class='flag-5'>IP</b><b class='flag-5'>地址</b><b class='flag-5'>沖突</b>解決方案

    IP地址沖突的原因和解決方案

    IP地址是互聯(lián)網(wǎng)協(xié)議地址,使用統(tǒng)一地址格式,為網(wǎng)絡(luò)中每個(gè)單元主機(jī)分配一個(gè)地址,供
    的頭像 發(fā)表于 02-01 10:43 ?2w次閱讀

    IP地址基礎(chǔ)知識(shí)+沖突故障的解決方法

    相信每個(gè)維修人員都會(huì)在實(shí)際工作中遇到IP地址沖突的故障,很多人不知道為何會(huì)產(chǎn)生IP地址沖突的故障
    的頭像 發(fā)表于 03-07 09:39 ?2221次閱讀
    <b class='flag-5'>IP</b><b class='flag-5'>地址</b>基礎(chǔ)知識(shí)+<b class='flag-5'>沖突</b>故障的解決方法

    網(wǎng)段隔離器(NAT網(wǎng)關(guān))如何解IP地址沖突問(wèn)題?

    ,而如果出現(xiàn)兩臺(tái)相同IP地址的設(shè)備,這時(shí)就會(huì)產(chǎn)生IP沖突,進(jìn)而導(dǎo)致網(wǎng)絡(luò)的異常甚至癱瘓。?? 為解決跨網(wǎng)段訪問(wèn)與
    的頭像 發(fā)表于 08-28 15:54 ?688次閱讀

    IP地址配置沖突導(dǎo)致路由振蕩怎么辦?

    IP地址配置沖突導(dǎo)致路由振蕩怎么辦? 標(biāo)題:解決IP地址配置沖突導(dǎo)致的路由振蕩 引言: 在
    的頭像 發(fā)表于 11-09 09:24 ?796次閱讀

    發(fā)生IP沖突的原因是什么呢?如何解IP沖突的問(wèn)題呢?

    發(fā)生IP沖突的原因是什么呢?如何解IP沖突的問(wèn)題呢? IP
    的頭像 發(fā)表于 12-07 09:32 ?4419次閱讀

    局域網(wǎng)IP地址沖突、環(huán)路的罪魁禍?zhǔn)资鞘裁矗?/a>

    局域網(wǎng)IP地址沖突、環(huán)路的罪魁禍?zhǔn)资鞘裁矗?局域網(wǎng)IP地址沖突和環(huán)路是
    的頭像 發(fā)表于 02-04 11:03 ?3762次閱讀

    在遠(yuǎn)程訪問(wèn)設(shè)備如果PLC的IP地址沖突何解

    要求從PLC中采集數(shù)據(jù)以達(dá)到遠(yuǎn)程監(jiān)控的目的,從而實(shí)現(xiàn)設(shè)備、人員、物料、能源等多種生產(chǎn)要素的互聯(lián)共通,從而及時(shí)覺(jué)察設(shè)備故障與產(chǎn)能缺陷,合理利用數(shù)據(jù)分析手段進(jìn)行決策。但如果現(xiàn)場(chǎng)IPIP地址沖突
    的頭像 發(fā)表于 02-20 17:26 ?691次閱讀
    在遠(yuǎn)程訪問(wèn)設(shè)備如果PLC的<b class='flag-5'>IP</b><b class='flag-5'>地址</b><b class='flag-5'>沖突</b>如<b class='flag-5'>何解</b>決

    產(chǎn)線設(shè)備聯(lián)網(wǎng)過(guò)程中的IP沖突(NAT轉(zhuǎn)換)問(wèn)題如何解

    都是唯一而獨(dú)立的,以便在網(wǎng)絡(luò)上進(jìn)行通信。然而,當(dāng)兩臺(tái)或更多的設(shè)備被分配了相同的IP地址時(shí),就會(huì)出現(xiàn)IP地址
    的頭像 發(fā)表于 04-09 17:28 ?491次閱讀
    產(chǎn)線設(shè)備聯(lián)網(wǎng)過(guò)程中的<b class='flag-5'>IP</b><b class='flag-5'>沖突</b>(NAT轉(zhuǎn)換)問(wèn)題如<b class='flag-5'>何解</b>決

    何解決工廠中相同IP設(shè)備沖突故障問(wèn)題

    隨著網(wǎng)絡(luò)規(guī)模的不斷擴(kuò)大,相應(yīng)的IP地址資源也越來(lái)越捉襟見(jiàn)肘,IP地址沖突現(xiàn)象與日俱增。特別是在工
    的頭像 發(fā)表于 06-13 17:30 ?434次閱讀
    如<b class='flag-5'>何解</b>決工廠中相同<b class='flag-5'>IP</b>設(shè)備<b class='flag-5'>沖突</b>故障問(wèn)題

    兩個(gè)路由器ip地址沖突怎么解決

    當(dāng)兩個(gè)路由器的IP地址發(fā)生沖突時(shí),會(huì)導(dǎo)致網(wǎng)絡(luò)連接不穩(wěn)定或無(wú)法連接。以下是解決兩個(gè)路由器IP地址
    的頭像 發(fā)表于 07-09 11:35 ?4724次閱讀

    IP地址沖突解決方法圖示

    你是否在日常使用網(wǎng)絡(luò)時(shí),有這樣的經(jīng)歷:突然就失去網(wǎng)絡(luò)連接,時(shí)斷時(shí)續(xù),加載緩慢,文件傳輸突然中斷?網(wǎng)絡(luò)連接并沒(méi)有完全斷開(kāi),但網(wǎng)速變得異常緩慢看電視劇卡頓、下載文件簡(jiǎn)直龜速?那么你可能是IP
    的頭像 發(fā)表于 07-26 11:51 ?377次閱讀

    PLC的IP沖突何解決(NAt物聯(lián)網(wǎng)解決方案)

    IP沖突,即在網(wǎng)絡(luò)環(huán)境中存在兩個(gè)或多個(gè)設(shè)備使用了相同的IP地址,導(dǎo)致網(wǎng)絡(luò)通信混亂。在工業(yè)自動(dòng)化
    的頭像 發(fā)表于 09-06 10:53 ?406次閱讀
    PLC的<b class='flag-5'>IP</b><b class='flag-5'>沖突</b>如<b class='flag-5'>何解</b>決(NAt物聯(lián)網(wǎng)解決方案)