背景
docker-composeでは特に指定のない限り、xxx_defaultというネットワークが作成されるが、このsubnetのCIDRは 172.17.0.0/12
、192.168.0.0/16
から重複しないように選ばれる。(前者が枯渇すると後者から選ばれる)
linuxでhost.docker.internalを使う
この手法を使うにはホスト側でdocker-composeが生成するサブネットからのパケットをfirewallで許可しないといけないが、上記のサブネット全部を許可するのはなんとなく嫌で、サブネットの範囲を限定したかった。
default-address-pool
dockerdの起動オプションで、自動でnetworkを作る時のサブネットのCIDR範囲を指定できる。
/etc/docker/daemon.json
{
"default-address-pools": [
{ "base": "10.123.0.0/16", "size": 24 }
]
}
上のように指定すると、10.123.0.0/16
からネットワークアドレスが24bitであるようなサブネット(10.123.0.0/24
、10.123.10.0/24
等)を選んでくれる。