日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

目錄
  • 一、前置知識
  • 二、問題表現
  • 三、排查
  • 四、解決
    • 1、找到占用的網段
    • 案例
    • 2、修改 docker 占用的網段
    • 3、另一種粗糙簡單的解決辦法

這個問題其實稍微有一點點麻煩,網上也沒有看到有比較全面正確的文章, 值得單獨寫一篇記錄一下。

一、前置知識

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

就算能,主機間的 ARP 廣播也會讓這個網絡瞬間癱瘓。

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

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

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

同理,/16 就代表前兩段都是網絡地址,10.0.0.0/16 中, 網絡地址是 10.0,后兩位 0.0 代表每個子網中的主機地址。

比如 10.0.0.1/16 和 10.0.0.2/16 是同一個子網的兩個主機。 10.0.0.1/16 和 10.1.0.1/16 是不同的子網的兩個主機。

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

二、問題表現

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

三、排查

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

首先是看下日志

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 查看,

一般來說按如下執行就行:

/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,

如果發現沒有 docker0,那基本可以肯定是 docker0 無法創建導致 dockerd 啟動失敗了。

四、解決

1、找到占用的網段

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

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

其次就是看一下本機的路由表 route -n,確認一下有沒有沖突的段。 一般來說,你會發現相關網段要么已經被占用,要么是路由表里存在沖突。

案例

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

排查后發現 route -n 里有這么一條:

10.0.0.0        172.21.0.1      255.0.0.0       UG    0      0        0 eth0

也就是說 10/8 被占用了,導致和我的 10.252.0/24 沖突。 后來聯系網管刪除了這條 10/8 的路由后解決。

2、修改 docker 占用的網段

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

systemctl stop docker

如果你用 docker service,那么 docker 會占用四個網段:

  • docker0
  • docker_gwbridge
  • ucp(docker engine 占用,不常見)
  • ingress

其中前三個的網段可以通過配置文件配置,第四個只能手動創建。

前三個網段會讀取 /etc/docker/daemon.json 這個配置文件, 這個文件默認是沒有的,需要手動創建。

{
    "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 至少要有兩項,按順序依次為:

  • docker0
  • docker_gwbridge
  • ucp

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

分享到:
標簽:沖突 地址 服務器 網絡 解決方法
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定