172.17.0.0の範囲を使用しないようにDockerを構成する


21

キャプティブポータルとデフォルトのDocker IP範囲に問題があるため、Dockerに172.17.0.0ではなく198.18.0.0の範囲を使用させようとしています。

docsに続い、を作成し/etc/docker/daemon.json、その中に以下を入れました

{
    "bip":"198.18.0.0/16"
}

これはdocker0で機能しましたが、他のネットワークには影響を与えていないようであり、最初に作成されたネットワークはdocker composeを使用して172.17.0.0になり、クラッシュが再作成されます。

すべての Dockerネットワークのデフォルトサブネットを変更するにはどうすればよいですか(できればすべての構成ファイルでカスタムIP範囲を指定する必要はありません)?

回答:


27

デフォルトの範囲を再定義することは可能です。

$ 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(マージ済み)


10.10.0.0/16は、グローバルデフォルトネットワークと重複しています。{"base": "192.168.0.0/16","size":24}を使用できます。見てくださいgithub.com/moby/moby/blob/...
ルートG

11

ドッカーがネットワークサブネットを生成する場所は3つあります。

  • デフォルトのブリッジ
  • ユーザー生成ブリッジネットワーク
  • Swarmモードで生成されたオーバーレイネットワーク

デフォルトのブリッジ(「ブリッジ」と呼ばれます)の場合、ファイルに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は、スウォームモードで生成されたオーバーレイネットワークのアドレス範囲を指定する機能を追加しました。これは、今のところswarmの作成時にのみ行うことができ、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

1
現在の2018/2019オプションの素晴らしい要約。また、Docker Desktopを使用しているbip場合は、設定/設定GUIのオプション。default-address-poolsあなたがその同じGUIで手動でdaemon.jsonを編集することができ、そして群れのためにdefault-addr-poolあなたはまだ、それらを変更するinitコマンド。
ブレットフィッシャー

1

設定し、デフォルトのブリッジネットワーク:「...デフォルトブリッジネットワークを設定するには、あなたがdaemon.jsonでオプションを指定するには、ここでいくつかのオプションを持つ例daemon.jsonが指定されているのみカスタマイズする必要がある設定を指定します...。」

compose:Specify custom networks: "...デフォルトのアプリネットワークを使用する代わりに、トップレベルネットワークキーで独自のネットワークを指定できます。これにより、より複雑なトポロジを作成し、カスタムネットワークドライバーとオプションを指定できます。 Composeによって管理されていない外部で作成されたネットワークにサービスを接続するために使用します。… "


docker-composeによって使用される暗黙的なネットワークに使用されるIP範囲と、明示的に設定された範囲を持たないネットワークに使用されるIP範囲を変更することは可能ですか?
jrtapsell

-1

少し残酷かもしれませんが、sudo ifconfig docker0 down使用しようとしているwifiと競合するインターフェイスをシャットダウンするだけです。


問題は、ネットワークをオフにすることではなく、別の範囲を使用することです。
-RalfFriedl

@RalfFriedlそれは本当です。しかし、多くの異なるwifiネットワークを使用する頻繁な旅行者として、あらゆる種類のポート範囲が競合しているのを見てきました。したがって、ポート範囲を検索する代わりに、一時的にネットワークをオフにすることもできます。
ファルコメンゲ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.