我想啟動很多 Docker 容器來進行測驗。每個測驗都有一個專用網路和該網路中的一些容器。只需要在每個網路內進行通信。因此我應該能夠一次運行許多測驗。
但是,我偶爾會收到此錯誤:
{"message":"在分配給網路的默認值中找不到可用的、不重疊的 IPv4 地址池"}
這是令人驚訝的,因為所有網路都是“內部的”。
是什么原因造成的,我該如何防止這種情況發生?
我正在使用 Docker CLI。
這個問題提到了網路數量的限制。有沒有辦法繞過這個限制?
docker --version
Docker version 20.10.7, build 20.10.7-0ubuntu5~20.04.2
uj5u.com熱心網友回復:
這可能是在 Docker 網路設定中手動指定 IP 相關資訊很有用的少數情況之一。
您鏈接到進一步鏈接到GitHub 問題的問題最終命名了 Docker 使用的特定網路:16 個網路 172.17.0.0/16 到 172.32.0.0/16,加上 16 個網路 192.168.0.0/20 到 192.168.240.0/ 20. (另請參閱有關相關問題的評論。)您說您只在每個網路上啟動幾個容器,因此 /16 子網(65,534 個地址)甚至 /20(4,094)都過多。
使用 Docker CLI,您可以docker network create使用特定--subnet的、標準 CIDR 格式的網路。您有責任確保網路不會相互重疊,也不會在您的主機上(或在 Docker 虛擬機中,如果適用)上的任何其他網路重疊。請注意,Docker 可能已經為“默認橋接網路”自行分配了 172.17.0.0/16,因此您可能無法使用。
但是,如果您不使用 172.18.0.0/16,則可以將其劃分為 256 /24 個網路:
docker network create --subnet=172.18.0.0/24 net0
docker network create --subnet=172.18.1.0/24 net1
...
docker network create --subnet=172.18.255.0/24 net255
Docker 將按照通常的方式創建網關和廣播地址,并自行分配每個容器的 IP 地址;您不需要該docker run --ip選項。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/460318.html
標籤:码头工人
