目錄
1. 問題
1.1 問題描述
1.2 原因:
1.3 排查步驟:?
1.3.1 查看docker 網絡
1.3.2 查看網絡數量?
1.4 解決方案
1.4.1?刪除沒使用的網絡
1.4.2 修改docker默認網絡地址
1.4.3?yml指定網絡
2.投票
?
好運氣不會憑空而來,要么藏在努力里,要么藏在堅持里。
文章標記顏色說明:
- 黃色:重要標題
- 紅色:用來標記結論
- 綠色:用來標記一級論點
- 藍色:用來標記二級論點
1. 問題
1.1 問題描述
docker-compose up -d 命令部署,報錯如下
Creating network "test_default" with the default driver
could not find an available, non-overlapping IPv4 address pool among the defaults to assign to the network
1.2 原因:
Docker默認支持30個不同的自定義bridge網絡,如果超過這個限制,就會提示上面的錯誤
1.3 排查步驟:?
1.3.1 查看docker 網絡
使用命令:
docker network ls
查看創(chuàng)建的網絡,可以查看服務器上目前已存在的網絡,
說明:
bridge、host、none,是docker默認網絡,不能刪除
bridge:橋接網絡
默認情況下啟動的Docker容器,是使用 bridgeDocker安裝時創(chuàng)建的橋接網絡,每次Docker容器重啟時,會按照順序獲取對應的IP地址,就導致重啟后,Docker的IP地址就變了
none:無指定網絡
使用 --network=none ,docker 容器就不會分配局域網的IP,這種適合不需要分配IP的情況。
host: 主機網絡
使用 --network=host,此時,Docker 容器的網絡會附屬在主機上,兩者是互通的。
例如,在容器中運行一個Web服務,監(jiān)聽8080端口,則主機的8080端口就會自動映射到容器中。
1.3.2 查看網絡數量?
使用命令:
docker network ls | wc -l
可以查看到現有數量33,
除去 標題欄 、默認的?host、null?正好有30個bridge網絡,
也說明了 “Docker默認支持30個不同的自定義bridge網絡”是這個原因導致
1.4 解決方案
1.4.1?刪除沒使用的網絡
這種方法可以快速解決問題,且不用重啟docker,
但是對于服務器數量多,復雜的情況,也存在一定的風險。
不要盲目刪除,需要確定能刪除才去執(zhí)行。
使用命令:
docker network prune
這種方案可以快速解決問題,但是也有一定的不足之處。
輸入y,即可刪除
?刪除之后,查詢數量,可以看到數量減少了
這時候,去部署項目,即可成功?
1.4.2 修改docker默認網絡地址
這種方法可以一勞永逸,但是如果對docker重啟要求比較嚴格,還是要慎重選擇。
可以再docker安裝成功之后,就修改其網絡地址,即可避免后期該問題的發(fā)生。
通常情況下docker服務安裝后,docker默認使用的網絡IP段是172.17.0.1/24,
這樣容易對實際環(huán)境造成沖突。為了解決這個問題,可參考以下方法
1.使用如下命令,停止docker
systemctl stop docker
2.cat /etc/docker/daemon.json
cat /etc/docker/daemon.json
在文件中添加 default-address-pools,如下:
"default-address-pools":[ {"base":"172.20.0.0/16","size":24}, {"base":"172.21.0.0/16","size":24}, {"base":"172.22.0.0/16","size":24}, {"base":"172.23.0.0/16","size":24} ]
這個配置將允許Docker分配
172.20.[0-255].0/24
每個網絡允許訪問256個地址,256*4=1024 總共1024個網絡。
此外,加入后需要 刪除現有網絡占用,執(zhí)行命令如下:
docker network prune
重啟docker,?后續(xù)該問題應該就不會發(fā)生了。
service docker restart
1.4.3?yml指定網絡
此方法 需要修改?docker-compose.yml 文件
如果項目docker-compose.yml文件較多 會比較麻煩
創(chuàng)建網絡文章來源:http://www.zghlxwxcb.cn/news/detail-783257.html
docker network create docker_compose_default_network --subnet 172.20.1.0/24
docker-compose.yaml指定網絡文章來源地址http://www.zghlxwxcb.cn/news/detail-783257.html
networks: default: external: name: docker_compose_default_network
2.投票
到了這里,關于【Docker系列】docke報錯 non-overlapping IPv4 address pool among the defaults to assign to the network 解決方法的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!