BLOGブログ

MacのDockerで「all predefined address pools have been fully subnetted」エラー!ネットワーク作成失敗時の対処法

takefushi / 2025.04.03

システム開発

DockerをMacで使用している際に、docker-compose upなどのコマンドを実行すると、以下のようなエラーメッセージが表示されることがあります。

[+] Running 1/0
  ✘ Network xxx_default  Error                                                                     0.0s
failed to create network xxx_default: Error response from daemon: all predefined address pools have been fully subnetted

このエラーは、Dockerが新しいネットワークを作成しようとした際に、利用可能なIPアドレスプールがすべて既存のネットワークに割り当てられてしまい、新しいネットワークを作成できなかったことを意味します。

エラーメッセージの詳細

failed to create network xxx_default: Error response from daemon: all predefined address pools have been fully subnetted

Dockerデーモンがネットワークの作成を試みたが、割り当てるIPアドレス範囲がないために失敗した

考えられる原因

このエラーが発生する主な原因は、以下のとおりです。

  • Dockerネットワークの過多
    Mac上で多数のDockerネットワークが作成されており、それぞれがIPアドレス範囲を使用しているため、利用可能なアドレスプールが枯渇している。
  • デフォルトIPアドレスプールの制限
    Dockerデーモンがデフォルトで使用するIPアドレスプールが小さく、多数のネットワークを作成するとすぐに枯渇してしまう。

解決策

以下の解決策を順番に試すことで、この問題を解決できるはずです。

1. 未使用のDockerネットワークを削除する

まず、不要なDockerネットワークを削除して、利用可能なIPアドレス範囲を増やします。

  • 現在のネットワーク一覧を表示する
    ターミナルで以下のコマンドを実行し、現在存在するDockerネットワークのリストを表示します
    docker network ls
  • 不要なネットワークを削除する
    表示されたネットワーク一覧から、不要なネットワークの名前を確認し、以下のコマンドで削除します。
    Bashdocker network rm <network_name>

2. Dockerデーモンの設定を変更する

Docker Desktopの設定で、Dockerデーモンが利用可能なIPアドレス範囲を拡張します。

  • Docker Desktopの設定を開く
    Docker Desktopアプリを起動し、メニューバーのDockerアイコンをクリックして、「Preferences」を選択します。
  • Docker Engineの設定を変更する
    表示された設定画面で、「Docker Engine」を選択し、daemon.jsonを編集します。
    daemon.jsondefault-address-pools設定を追加または修正します。
    下記のように、"default-address-pools": [ {"base": "172.20.0.0/16", "size": 24}, {"base": "192.168.0.0/16", "size": 24} ]を追加します。
    • "base"はネットワークアドレス、"size"はサブネットマスクを表します。
    • この例では、172.20.0.0/16と192.168.0.0/16の2つのアドレスプールを定義しています。
    • 設定内容は環境に合わせて適宜変更してください。
    • "base"はネットワークアドレス、"size"はサブネットマスクを表します。
    • この例では、172.20.0.0/16と192.168.0.0/16の2つのアドレスプールを定義しています。
    • 設定内容は環境に合わせて適宜変更してください。
  • Docker Desktopを再起動する
    設定ファイルを変更したら、「Apply & Restart」をクリックしてDocker Desktopを再起動し、変更を適用します。
{
  "builder": {
    "gc": {
      "defaultKeepStorage": "20GB",
      "enabled": true
    }
  },
  "default-address-pools": [
    {
      "base": "172.20.0.0/16",
      "size": 24
    },
    {
      "base": "192.168.0.0/16",
      "size": 24
    }
  ],
  "experimental": false
}