国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Docker 網(wǎng)絡(luò) IP 地址沖突了,該怎么辦呢?

這篇具有很好參考價值的文章主要介紹了Docker 網(wǎng)絡(luò) IP 地址沖突了,該怎么辦呢?。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

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

1前置知識

因為交換機的能力有限制,以及網(wǎng)線的連接不可能無限長, 所以我們不可能把所有的主機都連到同一個交換機上,然后處于同一個二層網(wǎng)絡(luò)中。

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

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

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

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

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

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

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

2問題表現(xiàn)

  • docker 進程無法啟動

  • 容器端口無法訪問,抓包顯示為有入站但是沒有出站

3排查

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

首先是看下日志

$?systemctl?status?docker
$?journalctl?-u?docker
$?dmesg?|?grep?docker

一般能看到如下日志:

docker0:?link?is?not?ready
docker_gwbridge:?link?is?not?ready

或者更簡單的排查方法,直接手動啟動 dockerd 看看。啟動方法可以通過?grep ExecStart /usr/lib/systemd/system/docker.service?查看。

一般來說按如下執(zhí)行就行:

$?/usr/bin/dockerd?--debug

然后能看到最后輸出:

INFO[2021-07-29T02:25:55.811673622Z]?stopping?event?stream?following?graceful?shutdown??error="<nil>"?module=libcontainerd?namespace=moby
failed?to?start?daemon:?Error?initializing?network?controller:?list?bridge?addresses?failed:?PredefinedLocalScopeDefaultNetworks?List:?[10.252.0.0/24?10.252.1.0/24?10.252.2.0/24]:?no?available?network

這時候可以看下?ip addr,是否有?docker0?和?docker_gwbridge,

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

4解決

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

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

最簡單的方法就是 ping 一下,如果無響應(yīng)的話,那么就說明沒有被占用。

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

案例

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

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

10.0.0.0????????172.21.0.1??????255.0.0.0???????UG????0??????0????????0?eth0

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

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

以下操作需要先停止 docker 進程

$?systemctl?stop?docker

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

  1. docker0

  2. docker_gwbridge

  3. ucp(docker engine 占用,不常見)

  4. ingress

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

前三個網(wǎng)段會讀取?/etc/docker/daemon.json?這個配置文件, 這個文件默認是沒有的,需要手動創(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}
????]
}

注意這個?default-address-pools?至少要有兩項,按順序依次為:

  1. docker0

  2. docker_gwbridge

  3. ucp

以防萬一的話,配置三個是最好的??。

接下來是修改 ingress,這個比較麻煩,需要手動創(chuàng)建。

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

  1. 刪除 ingress

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

  3. 新建 my-ingress

$?yes?'y'?|?docker?network?rm?ingress
$?yes?'y'?|?docker?network?rm?my-ingress?2>&1?|?true
$?docker?network?create?\
??--driver?overlay?\
??--ingress?\
??--subnet=10.252.3.0/24?\??#?指定?ingress?的網(wǎng)段,不要和上面?daemon.json?的網(wǎng)段沖突
??--gateway=10.252.3.2?\
??--opt?com.docker.network.driver.mtu=1200?\
??my-ingress

ingress 是默認名,之所以新建一個名字不一樣的,是因為刪除 ingress 是異步的。如果你刪除 ingress 后立刻新建一個也叫 ingress 的網(wǎng)絡(luò),很可能會報一個重名的錯誤。

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

$?ip?link?del?dev?docker0
$?ip?link?del?dev?docker_gwbridge
$?rm?-rf?/var/lib/docker/network

另一種粗糙簡單的解決辦法

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

這種解決方法最簡單,但是機器 reboot 后 docker0 會自動被刪掉, 所以這方法并不持久。

而且,實際上也不一定能解決網(wǎng)段沖突的問題,只是說 docker 能啟動了而已。文章來源地址http://www.zghlxwxcb.cn/news/detail-546200.html

ip?link?add?name?docker0?type?bridge
ip?addr?add?dev?docker0?10.252.0.1/24

到了這里,關(guān)于Docker 網(wǎng)絡(luò) IP 地址沖突了,該怎么辦呢?的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 電腦只能登錄微信?但卻打不開網(wǎng)頁?不能上網(wǎng)怎么辦?ip地址和DNS出問題了無法上網(wǎng)怎么辦?

    電腦只能登錄微信?但卻打不開網(wǎng)頁?不能上網(wǎng)怎么辦?ip地址和DNS出問題了無法上網(wǎng)怎么辦?

    描述一下問題: 昨天使用了一些代理梯子。直接關(guān)機,沒有關(guān)閉那個軟件、今天打開電腦就出問題了。只能登錄微信!但卻打不開網(wǎng)頁! 今天查了很多資料都沒有解決?;?個多小時。終于可以上網(wǎng)了! 找到【控制面板】 --【網(wǎng)絡(luò)和Internet】-- 里面的【網(wǎng)絡(luò)連接】或者【網(wǎng)

    2024年02月05日
    瀏覽(161)
  • 啟動docker顯示Docker Engine stopped怎么辦?

    啟動docker顯示Docker Engine stopped怎么辦?

    ????????在windows11系統(tǒng)下,我的Docker突然無法啟動,打開Docker Desktop顯示Docker Engine stopped… 嘗試了網(wǎng)上好多辦法,就我的問題而言,打開 控制面板-程序啟用或關(guān)閉Windows功能,重新打鉤選中Hyper-V后點擊確定,再重啟電腦問題就解決了。

    2024年02月03日
    瀏覽(17)
  • docker中mysql忘記密碼怎么辦?

    進入容器:docker exec -it mysql bash 修改mysql配置: [mysqld] skip-host-cache skip-name-resolve skip-grant-tables 進入mysql交互環(huán)境:mysql -uroot -p( 備注:不要輸入密碼直接點擊enter鍵進入 ) 重置密碼為空:update user set authentication_string=‘’ where user=‘root’; 生效配置:flush privileges; 重置新密碼

    2024年02月07日
    瀏覽(99)
  • 不小心刪除了docker/overlay2怎么辦?

    不小心刪除了docker/overlay2怎么辦?

    服務(wù)器硬盤容量達到頂峰,沒有空閑空間。利用df -h的時候查看到/data/docker/overlay2占用最大。以為這里面都是docker的緩存文件,刪除也無妨,所以直接通過 rm -rf 命令刪除。(沒有做任何備份)刪完之后整個人就傻了,所有的容器運行全部失敗。 此時!不要慌,不要著急做其

    2024年02月15日
    瀏覽(32)
  • 阿里云提示服務(wù)器ip暴露該怎么辦?-速盾網(wǎng)絡(luò)(sudun)

    當(dāng)阿里云提示服務(wù)器IP暴露的時候,這意味著您的服務(wù)器可能面臨安全風(fēng)險,因為黑客可以通過知道服務(wù)器的IP地址來嘗試入侵您的系統(tǒng)。在這種情況下,您應(yīng)該立即采取措施來保護您的服務(wù)器和數(shù)據(jù)。以下是一些建議: 更改服務(wù)器IP地址:首先,您可以考慮更改服務(wù)器的IP地

    2024年01月20日
    瀏覽(16)
  • Docker管理工具Portainer忘記admin登錄密碼怎么辦?

    Docker管理工具Portainer忘記admin登錄密碼怎么辦?

    Portainer官網(wǎng)解決方法鏈接 https://docs.portainer.io/v/ce-2.11/advanced/reset-admin 炒雞詳細步驟! 1.查看所有容器,包括未運行的 2.找到Portainer對應(yīng)信息 ?3.停止Portainer容器 4.找到Portainer容器掛載信息 ?找到這個信息 5.執(zhí)行命令重置密碼 ?現(xiàn)在admin登錄的密碼就為:4~!15SlshwmY#89FpcRE06u{HL2(_

    2024年01月16日
    瀏覽(13)
  • git中合并分支時出現(xiàn)了代碼沖突怎么辦

    git中合并分支時出現(xiàn)了代碼沖突怎么辦

    友情提醒: ①git merge命令介紹 git merge 用于本地分支的合并。將一個本地分支的更改合并到另一個本地分支時,你會使用git merge命令。 git merge命令用于將一個分支的更改合并到另一個分支。它會將兩個分支的更改整合在一起,保留詳細的合并信息,并成為一個新的提交。 例如

    2024年03月20日
    瀏覽(101)
  • Linux:已經(jīng)配置了阿里云鏡像加速,但是docker拉取鏡像速度依然很慢怎么辦?

    說明: 以下方案可以一起使用,或許某次就成功了,加油 1、方案1:切換鏡像源 直接在百度上搜索 docker國內(nèi)鏡像源 ,可以搜索到很多文檔,這里不再贅述。在嘗試多個鏡像源之后,我推薦網(wǎng)易docker鏡像源,更換方法如下: 2、方案2:重啟docker服務(wù),命令: systemctl restart d

    2024年02月12日
    瀏覽(22)
  • 忘記寶塔安全入口地址怎么辦?簡單修改安全入口地址教程

    忘記寶塔安全入口地址怎么辦?簡單修改安全入口地址教程

    相信很多用寶塔Linux的朋友都有遇到過長時間沒有登錄寶塔,結(jié)果一登錄上發(fā)現(xiàn)安全入口地址忘記了,不知道怎么查看和修改。 其實忘記寶塔安全入口地址后,登錄寶塔時頁面上已經(jīng)提示了查看寶塔安全入口地址的命令,但是很多小伙伴不知道咋執(zhí)行,這里小編就教大家操作

    2024年02月02日
    瀏覽(89)
  • 遇到Got permission denied while trying to connect to the Docker daemon socket at unix:///var/怎么辦?

    遇到Got permission denied while trying to connect to the Docker daemon socket at unix:///var/怎么辦?

    問題:在使用執(zhí)行docker命令的時候,總是提示如下報錯 原因是:在默認情況下,docker 的 Unix Socket屬于root用戶,當(dāng)然其他用戶可以使用sudo方式來訪問。因為這個原因, docker 進程就一直是root用戶運行的。為了在使用 docker 命令的時候前邊不再加sudo,我們需要創(chuàng)建一個叫 dock

    2024年02月13日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包