Docker で IP枯渇!?
ローカルの開発環境 として Docker を 使っているのですが
ある時ERROR: could not find an available, non-overlapping IPv4 address pool among the defaults to assign to the network
という エラーに遭遇しました
どうやら Docker で 使用している IPアドレスを 使い切った様です
でも そんなに コンテナ立ててないのに 使い切るなんてことがあるのかと思って ドキュメントを 調べてみました
そしたら 172.17.0.0/12 や 192.168.0.0/16 を 基底IPアドレス として
ネットワークあたり 65,536個 ( /16 ) ものIPアドレスをキープしているようです
https://github.com/docker/docs/issues/8663#issuecomment-956438889
https://github.com/moby/libnetwork/blob/master/ipamutils/utils.go#L18-L20
docker-compose では 1つの環境で ネットワークゾーンを 1つ確保 するので
大体 30個 くらいの コンテナを立ち上げると 枯渇するみたいです
そんなにたくさんのネットワークを使う開発は行っていないので
ネットワークあたり 64個 ( /26 ) あれば 十分でしょう
ということで
DockerDesktop の Settings から Docker Engine を 選択して
"default-address-pools": [
{
"base": "172.17.0.0/12",
"size": 26
},
]
を 追加します
これで 172.16.0.1 ~ 172.31.255.254 の IP ( 1,048,576個 ) を 64個ずつ 使っていくので 枯渇することは なくなるでしょう
64個 ( /26 ) じゃ 不安だという方は 256個 ( /24 ) を 使うと 良いでしょう
それでも 単純計算で 4,096個の コンテナが建てられるので 使い切ることは ないんじゃないでしょうか