8
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

daemon.jsonでDockerコンテナに割り当てるIPアドレスをコントロールする方法

Last updated at Posted at 2025-04-16

fixed-cidrdefault-address-poolsの意味を把握しておらず、コンテナ作成時に振られるIPアドレスが狙い通りにならなかったため、これらについてまとめました。

--ipオプションやDocker Composeのnetworksで明示的にIPアドレスを指定するのではなく、コンテナ作成時にデフォルトで割り当てられるIPアドレスの範囲をdaemon.jsonで設定する方法です。

fixed-cidrdefault-address-poolsの意味

fixed-cidr

fixed-cidrは、デフォルトブリッジネットワーク(docker0)のサブネット内でコンテナに割り当てるIPアドレスの範囲を制限する設定です。

例えば、bip172.20.0.0/24を指定した際に、fixed-cidr172.20.0.128/25のような範囲を指定することで、コンテナがその範囲内からIPを取得するように制御します。bipで指定したサブネット範囲全体を使っても構わない場合、fixed-cidrを指定する必要はありません。

ちなみにbipは、docker0のIPアドレスとネットワークアドレス範囲を指定する設定値です。

default-address-pools

default-address-poolsは、新規作成したDockerネットワーク内でコンテナに割り当てられるIPアドレスの範囲を指定するための設定です。

dockerコマンドでコンテナを作成する場合は、明示的にネットワークを指定しなければdocker0ネットワークに属するためdefault-address-poolsの設定値は関係ありませんが、Docker Composeの場合は、network_mode: bridgeと設定しなければ自動的に新たなネットワークが作成されるため、default-address-poolsで設定したネットワークアドレス範囲からIPアドレスが割り当てられます。

daemon.jsonの例

daemon.jsonの例を書いておきます。

以下の設定では、docker0ブリッジのIPアドレスを192.168.0.1/24に設定し、docker0に接続するコンテナのIPアドレスを192.168.0.128/25の範囲内から割り当てます。その他のネットワークには、172.16.0.0/12の範囲をベースとして、172.16.0.0/20172.16.16.0/20172.16.32.0/20、...、172.31.240.0/20といったサブネットが払い出されることになり、コンテナにはこれらのサブネットからIPアドレスが割り当てられます。

daemon.json
{
    "bip": "192.168.0.1/24",
    "fixed-cidr": "192.168.0.128/25",
    "default-address-pools": [
        {
          "base": "172.16.0.0/12",
          "size": 20
        }
    ]
}

まとめ

デフォルトブリッジネットワークを適用する場合はfixed-cidr、Docker Composeで特に設定せず起動するなどして別途作成されたネットワークを適用する場合はdefault-address-poolsを使うことでコンテナに割り当てるIPアドレスをコントロールすることができます。

参考

8
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?