キャプティブポータルとデフォルトのDocker IP範囲の問題により、Dockerに172.17.0.0ではなく、198.18.0.0の範囲を使用させようとしています。これは、私が住んでいる列車で使用されているキャプティブポータルと競合するためです。
the docs に続いて、/etc/docker/daemon.json
を作成し、それに以下を入れました:
{
"bip":"198.18.0.0/16"
}
これはdocker0で機能しましたが、他のネットワークには影響を与えていないようです。dockercomposeを使用すると、最初に作成されたネットワークが172.17.0.0になり、クラッシュが再作成されます。
alldockerネットワークのデフォルトサブネットを変更するにはどうすればよいですか(できれば、すべての構成ファイルでカスタムIP範囲を指定する必要がない)。
デフォルトの範囲を再定義することが可能です。
$ docker -v
Docker version 18.06.0-ce, build 0ffa825
Dockerデーモンの構成ファイルを編集または作成します。
# nano /etc/docker/daemon.json
行を追加します。
{
"default-address-pools":
[
{"base":"10.10.0.0/16","size":24}
]
}
Dockerdを再起動します。
# service docker restart
結果を確認します。
$ docker network create foo
$ docker network inspect foo | grep Subnet
"Subnet": "10.10.1.0/24"
Docker-composeでも動作します。詳細はこちら https://github.com/moby/moby/pull/29376 (マージ)
Dockerがネットワークサブネットを生成する場所は3つあります。
デフォルトのブリッジ(「ブリッジ」と呼ばれます)の場合、BIPを指定できます(私はそれがブリッジIPだと思います; ネットワークIPではなくホストIPであることを確認してください ) の中に daemon.json
ファイル。また、ユーザーが生成したブリッジネットワークでは、サブネットプールを定義してそこから選択できます(ユーザーが手動でサブネットを指定しない場合)。これら2つについて、あなたの/etc/docker/daemon.json
は次のようになります。
{
"bip": "10.200.0.1/24",
"default-address-pools":[
{"base":"10.201.0.0/16","size":24},
{"base":"10.202.0.0/16","size":24}
]
}
上記の各アドレスプール設定は、CIDR範囲とその範囲から割り当てられるサブネットのサイズを定義します。したがって、上記はクラスCネットワーク(/ 24)として割り当てられる2つのクラスB範囲を定義しています。デフォルトのアドレスプールには少なくとも18.06が必要です。この変更を適用するには、Dockerデーモンを再ロードする必要があります(systemctl reload docker
)。また、この変更は新しく作成されたユーザーネットワークのみを変更するため、コンテナーを停止し、間違った範囲にある既存のネットワークを削除する必要があります。
18.09で、Dockerは、スウォームモードで生成されたオーバーレイネットワークのアドレス範囲を指定する機能を追加しました。これは、現時点ではスウォームの作成時にのみ実行できます。できれば、docker swarm update
これらのプールを調整するには:
$ docker swarm init \
--default-addr-pool 10.202.0.0/16 \
--default-addr-pool 10.203.0.0/16 \
--default-addr-pool-mask-length 24
構成 デフォルトブリッジネットワーク : "…デフォルトブリッジネットワークを構成するには、daemon.jsonでオプションを指定します。いくつかのオプションを指定したdaemon.jsonの例を示します。カスタマイズする必要がある設定のみを指定してください……」
Compose: Specify custom networks : "…デフォルトのアプリネットワークを使用する代わりに、最上位のネットワークキーを使用して独自のネットワークを指定できます。これにより、より複雑なトポロジを作成し、カスタムネットワークを指定できますドライバとオプション。これを使用して、Composeで管理されていない外部で作成されたネットワークにサービスを接続することもできます。
少し残忍かもしれませんが、私は単にSudo ifconfig docker0 down
使用しようとしているwifiと競合するインターフェースをシャットダウンします。