Docker ネットワーキングの概要
docker
インストール中にデフォルトで 3 つのネットワークが作成されますbridge
(作成されたコンテナはデフォルトでこのネットワークに接続されます) none
、、host
。
host
ネットワークをホスト マシンと直接共有します。bridge
ネットワークの分離。仮想ブリッジ (通常は ) を介してdocker0
ホストと通信します。none
ネットワーク機能を無効にします。
docker network ls
ネットワーク設定を表示でき、出力は次のようになります。
NETWORK ID NAME DRIVER SCOPE
1363ad4ba2a5 bridge bridge local
715796504a13 host host local
723f2680cdad none null local
コンテナ作成時のネットワーク初期化
Docker
コンテナを作成するときは、次の操作が実行されます。
- 仮想インターフェイスのペアを作成し、それぞれローカル ホストと新しいコンテナーに配置します。
- ローカル ホストはデフォルトまたは指定されたブリッジにブリッジされ、 ;
docker0
などの一意の名前が付けられます。veth65f9
- コンテナーの一方の端を新しいコンテナーに配置し、名前を変更します
eth0
。このインターフェイスはコンテナーの名前空間でのみ表示されます。 - ブリッジの使用可能なアドレス セグメントからアイドル アドレスを取得し、それをコンテナの eth0 に割り当て、ブリッジ ネットワーク カードへのデフォルト ルートを構成します
veth65f9
。
これが完了すると、コンテナはeth0
仮想ネットワーク カードを使用して他のコンテナや他のネットワークに接続できるようになります。
ホストIPを使用する
ホストモード
このモードでは、コンテナを使用してホスト127.0.0.1
に直接アクセスできます。localhost
docker
in を使用して、コンテナーのネットワーク--network host
を構成します。host
docker run --network host host-main
docker-compose
以下を構成するために使用しますnetwork_mode: "host"
。
version: "3"
services:
main:
build:
context: .
dockerfile: ./dockerfile
network_mode: "host"
ブリッジモード
Linux
代わりにホストを使用できdocker0
ます。IP
localhost
- クエリホスト
IP
ip addr show docker0
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
link/ether 02:42:5a:02:53:f5 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 scope global docker0
valid_lft forever preferred_lft forever
inet6 fe80::42:5aff:fe02:53f5/64 scope link
valid_lft forever preferred_lft forever
IP
ホスト マシンの[はい]を見つけて172.17.0.1
、アドレスを にhttp://localhost:4780
変更するhttp://172.17.0.1:4780
と、アクセスできるようになります。
ウィンドウズ
同様に、Windows
仮想ネットワーク カードを見つけて、IP
それを交換するかどうかを確認することもできます。
http://localhost:4780
=>http://192.168.236.129:4780
Windows
ホストは、host.docker.internal
この特別な名前を通じて解決することもできます。マッピング、ファイルの内容は次のとおりです。DNS
IP
hosts
C:\Windows\System32\drivers\etc\hosts
http://localhost:4780
=>http://host.docker.internal:4780
参考
公式サイト
Dockerネットワーク
Dockerネットワークの詳しい説明 - 原理
Dockerコンテナがホストネットワークにアクセス