まず、network のすべてのサブコマンドを見てみましょう:
(推奨チュートリアル: docker チュートリアル)
docker network create docker network connect docker network ls docker network rm docker network disconnect docker network inspect
一、ネットワークを作成する
Docker Engine をインストールすると、デフォルトのブリッジ ネットワーク docker0 が自動的に作成されます。さらに、独自のブリッジ ネットワークやオーバーレイ ネットワークを作成することもできます。
ブリッジ ネットワークは Docker エンジンを実行する単一のホストに接続されますが、オーバーレイ ネットワークはそれぞれの Docker エンジンを実行する複数のホスト環境をカバーできます。
ブリッジ ネットワークの作成は次のように比較的簡単です:
# 不指定网络驱动时默认创建的bridge网络 docker network create simple-network # 查看网络内部信息 docker network inspect simple-network # 应用到容器时,可进入容器内部使用ifconfig查看容器的网络详情
ただし、オーバーレイ ネットワークの作成にはいくつかの前提条件が必要です (特定の操作については、Docker コンテナ ネットワークの関連コンテンツを参照してください):
- key-value store(Engine支持Consul、Etcd和ZooKeeper等分布式存储的key-value store) - 集群中所有主机已经连接到key-value store - swarm集群中每个主机都配置了下面的daemon参数 - –cluster-store - –cluster-store-opt - –cluster-advertise
次にオーバーレイ ネットワークを作成します:
# 创建网络时,使用参数`-d`指定驱动类型为overlay docker network create -d overlay my-multihost-network
--subnet オプションを使用してサブネットを作成する場合、ブリッジ ネットワークでは 1 つのサブネットのみを指定できますが、オーバーレイ ネットワークでは複数のサブネットがサポートされます。サブネット。
ブリッジおよびオーバーレイ ネットワーク ドライバーの下に作成されたネットワークでは、さまざまなパラメーターを指定できます。
2. コンテナを接続します
3 つのコンテナを作成します。最初の 2 つはデフォルト ネットワークを使用してコンテナを起動し、3 つ目はカスタム ブリッジ ネットワークを使用してコンテナを起動します。次に、2 番目のコンテナをカスタム ネットワークに追加します。これら 3 つのコンテナのネットワーク条件は次のとおりです。
最初のコンテナ: デフォルトの docker0 のみ
2 つ目のコンテナ: docker0、カスタム ネットワークの 2 つのネットワークに属します
# 3 番目のコンテナ: カスタム ネットワークのみに属します注: コンテナを介して指定されたネットワークを開始すると、デフォルトのブリッジ ネットワーク docker0 が上書きされます。# 创建三个容器 conTainer1,container2,container3 docker run -itd --name=container1 busybox docker run -itd --name=container2 busybox # 创建网络mynet docker network create -d bridge --subnet 172.25.0.0/16 mynet # 将容器containerr2连接到新建网络mynet docker network connect mynet container2 # 使用mynet网络来容器container3 docker run --net=mynet --ip=172.25.3.3 -itd --name=container3 busybox # 查看这三个容器的网络情况 docker network inspect container1 # docker0 docker network inspect container2 # docker0, mynet docker network inspect container3 # mynet3. デフォルト ネットワークとカスタム ブリッジ ネットワークの違いデフォルト ネットワーク docker0: ネットワーク内のすべてのホストは、IP を使用してのみ相互にアクセスできます。 --link オプションを使用して作成されたコンテナは、リンクされたコンテナ名 (container-name) にホスト名として直接アクセスできます。 カスタマイズされたネットワーク (ブリッジ): IP アクセスに加えて、ネットワーク内のすべてのホストは、コンテナー名 (container-name) をホスト名として使用して相互に直接アクセスすることもできます。
# 进入container2内部 docker attach container2 ping -w 4 container3 # 可访问 ping -w 4 container1 # 不可访问 ping -w 4 172.17.0.2 # 可访问container1的IP # Ctrl+P+Q退出容器,让container2以守护进程运行4. コンテナ接続におけるデフォルトネットワークとカスタムブリッジネットワークの違い デフォルトネットワークでリンク(レジェンドリンク)を使用すると以下の機能があります:
- 使用容器名作为hostname - link容器时指定alias: --link=<Container-Name>:<Alias> - 配合--icc=false隔离性,实现容器间的安全连接 - 环境变量注入Auto 定義されたネットワークで docker net を使用すると、次の機能が提供されます。
- 使用DNS实现自动化的名称解析 - 一个网络提供容器的安全隔离环境 - 动态地attach与detach到多个网络 - 支持与--link选项一起使用,为链接的容器提供别名(可以是尚不存在链接容器,与默认容器中–link使用的最大差别)デフォルト ネットワークのリンクは静的であるため、リンク コンテナーを再起動できませんが、カスタム ネットワークのリンクは動的であり、リンク コンテナの再起動をサポートします (および IP が変更されます)
したがって、 --link を使用するときにリンクされるコンテナは、デフォルト ネットワークで事前に作成する必要がありますが、カスタム ネットワークで事前に構築する必要はありません。通信網。
# 运行容器使用自定义网络,同时使用--link链接尚不存在的container5容器 docker run --net=mynet -itd --name=container4 --link container5:c5 busybox # 创建容器container5 docker run --net=mynet -itd --name=container5 --link container4:c4 busybox # 虽然是相同容器,但是在不同的网络环境连接中可以不同的alias链接 docker network connect --link container5:foo local_alias container4 docker network connect --link container4:bar local_alias container55. コンテナーのネットワーク スコープのエイリアスを指定します (ネットワーク スコープのエイリアス) ネットワーク スコープのエイリアスは、指定されたコンテナーのエイリアスであり、ネットワーク スコープ内の他のコンテナーからアクセスできます。同じネットワーク範囲。 リンク エイリアスとは異なり、リンク エイリアスはリンク コンテナのユーザーによって提供され、それ自体でのみ使用できます。一方、指定されたネットワーク範囲内のエイリアスは、ネットワーク内の他のコンテナが使用できるようにコンテナによって提供されます。 。 ネットワーク スコープのエイリアス: 同じネットワーク内の複数のコンテナが同じエイリアスを指定できます。もちろん、指定されたエイリアスを持つ最初のコンテナのみが有効になります。
最初のコンテナが閉じている場合のみ、同じエイリアスを指定する 2 番目のコンテナーのエイリアスが有効になります。
docker run --net=mynet -itd --name=container6 --net-alias app busybox docker network connect --alias scoped-app local_alias container6 docker run --net=isolated_nw -itd --name=container7 --net-alias app busybox docker network connect --alias scoped-app local_alias container7 # 在container4中 docker attach container4 ping app # 访问container6的IP # 从container4中以守护进程运行退出:Ctrl+P+Q docker stop container6 docker attach container4 ping app # 访问的container7的IP6. ネットワークを切断して削除します
# 容器从mynet网络中断开(它将无法再网络中的容器container3通讯) docker network disconnect mynet container2 # 测试与容器container3失败 docker attach container2 ping contianer3 # 访问失败マルチホスト ネットワーク環境では、削除されたコンテナ名でコンテナをネットワークに接続すると、すでにコンテナが表示されます。ネットワークに接続エラー,
現時点では、新しいコンテナ docker rm -f を強制的に削除し、再実行してネットワークに接続する必要があります。
# 断开最后一个连接到mynet网络的容器 docker network disconnet mynet container3 # 移除网络 docker network rm mynet
以上がdocker networkコマンドの詳しい説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。