てくてくあるく

WordPress の テーマ とか プラグイン に ついて 勉強しています

ローカルの開発環境 として 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個の コンテナが建てられるので 使い切ることは ないんじゃないでしょうか

Related Article

Docker で 開発環境 の ベースを 作ってみた (2)

詳細へ »

Docker で 開発環境 の ベースを 作ってみた (3)

詳細へ »

Docker で 開発環境 の ベースを 作ってみた (1)

詳細へ »