dockerネットワーク
8393 ワード
dockerのネットワークタイプ
bridgeはデフォルトのネットワークドライバで、アプリケーションが個別のコンテナで実行され、接続が必要な場合はbridgeで駆動されることが多い.
hostは、スタンドアロン版コンテナについて、コンテナとdockerシンクホストとの間のネットワーク分離を除去し、コンテナはシンクホストのネットワークを直接使用します.hostはswarmサービスにのみ使用できます(docker 17.06以降)
overlay overlayネットワークは複数のdockerデーモンプロセスに接続され、swarmサービスを使用して各docker間でコミュニケーションを行います.swarmサービスとスタンドアロン版コンテナ、2つの異なるdockerデーモンプロセスのスタンドアロン版のコンテナはoverlayネットワークを通じて交流することができます.
macvlan macvlanネットワークは、コンテナにMACアドレスを割り当てることを可能にし、コンテナをネットワーク内で物理マシンのように表現する.dockerデーモンプロセスは、MACアドレスに基づいてコンテナにトラフィックをルーティングする.物理ネットワークに直接接続したいレガシーアプリケーションを処理する場合、macvlanネットワークを使用することは、ルーティングトラフィックを介してdockerにアクセスするホストネットワークスタックよりも適している.
noneネットワークを無効にする
Network pluginでは、サードパーティ製ネットワークプラグインのインストールを許可します.
dockerインストール時にネットワークを持参
bridgeネットワーク
dockerが新しいコンテナを実行するときにnetworkパラメータを指定しない場合は、デフォルトでbridgeネットワークにコンテナが追加されます.同じbridgeネットワーク内の各コンテナはdockerが割り当てた仮想IPでコミュニケーションできる.
2つのコンテナを起動
コンテナalpine 1はipを介してalpine 2に直接アクセスできます.コンテナはbridgeで外部ネットワークにアクセスすることもできます.
ユーザー定義bridgeネットワーク
ユーザが複数のローカルエリアネットワークを必要とする場合、割り当てのために複数のbridgeネットワークを作成することができる.
1つのコンテナは複数のネットワークに同時に追加できます.この場合、コンテナは各ネットワークにipがあり、このコンテナはネットワークのコンテナネットワークに接続できます.ネットワーク間のコンテナネットワークが通じません.
bridgeはデフォルトのネットワークドライバで、アプリケーションが個別のコンテナで実行され、接続が必要な場合はbridgeで駆動されることが多い.
hostは、スタンドアロン版コンテナについて、コンテナとdockerシンクホストとの間のネットワーク分離を除去し、コンテナはシンクホストのネットワークを直接使用します.hostはswarmサービスにのみ使用できます(docker 17.06以降)
overlay overlayネットワークは複数のdockerデーモンプロセスに接続され、swarmサービスを使用して各docker間でコミュニケーションを行います.swarmサービスとスタンドアロン版コンテナ、2つの異なるdockerデーモンプロセスのスタンドアロン版のコンテナはoverlayネットワークを通じて交流することができます.
macvlan macvlanネットワークは、コンテナにMACアドレスを割り当てることを可能にし、コンテナをネットワーク内で物理マシンのように表現する.dockerデーモンプロセスは、MACアドレスに基づいてコンテナにトラフィックをルーティングする.物理ネットワークに直接接続したいレガシーアプリケーションを処理する場合、macvlanネットワークを使用することは、ルーティングトラフィックを介してdockerにアクセスするホストネットワークスタックよりも適している.
noneネットワークを無効にする
Network pluginでは、サードパーティ製ネットワークプラグインのインストールを許可します.
dockerインストール時にネットワークを持参
$ docker network ls
NETWORK ID NAME DRIVER SCOPE
17e324f45964 bridge bridge local
6ed54d316334 host host local
7092879f2cc8 none null local
bridgeネットワーク
dockerが新しいコンテナを実行するときにnetworkパラメータを指定しない場合は、デフォルトでbridgeネットワークにコンテナが追加されます.同じbridgeネットワーク内の各コンテナはdockerが割り当てた仮想IPでコミュニケーションできる.
2つのコンテナを起動
$ docker run -dit --name alpine1 alpine ash
$ docker run -dit --name alpine2 alpine ash
$ docker network inspect bridge
[
{
"Name": "bridge",
"Id": "17e324f459648a9baaea32b248d3884da102dde19396c25b30ec800068ce6b10",
"Created": "2017-06-22T20:27:43.826654485Z",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": null,
"Config": [
{
"Subnet": "172.17.0.0/16",
"Gateway": "172.17.0.1"
}
]
},
"Internal": false,
"Attachable": false,
"Containers": {
"602dbf1edc81813304b6cf0a647e65333dc6fe6ee6ed572dc0f686a3307c6a2c": {
"Name": "alpine2",
"EndpointID": "03b6aafb7ca4d7e531e292901b43719c0e34cc7eef565b38a6bf84acf50f38cd",
"MacAddress": "02:42:ac:11:00:03",
"IPv4Address": "172.17.0.3/16",
"IPv6Address": ""
},
"da33b7aa74b0bf3bda3ebd502d404320ca112a268aafe05b4851d1e3312ed168": {
"Name": "alpine1",
"EndpointID": "46c044a645d6afc42ddd7857d19e9dcfb89ad790afb5c239a35ac0af5e8a5bc5",
"MacAddress": "02:42:ac:11:00:02",
"IPv4Address": "172.17.0.2/16",
"IPv6Address": ""
}
},
"Options": {
"com.docker.network.bridge.default_bridge": "true",
"com.docker.network.bridge.enable_icc": "true",
"com.docker.network.bridge.enable_ip_masquerade": "true",
"com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
"com.docker.network.bridge.name": "docker0",
"com.docker.network.driver.mtu": "1500"
},
"Labels": {}
}
]
コンテナalpine 1はipを介してalpine 2に直接アクセスできます.コンテナはbridgeで外部ネットワークにアクセスすることもできます.
ユーザー定義bridgeネットワーク
ユーザが複数のローカルエリアネットワークを必要とする場合、割り当てのために複数のbridgeネットワークを作成することができる.
$ docker network create --driver bridge alpine-net
$ docker network ls
NETWORK ID NAME DRIVER SCOPE
e9261a8c9a19 alpine-net bridge local
17e324f45964 bridge bridge local
6ed54d316334 host host local
7092879f2cc8 none null local
1つのコンテナは複数のネットワークに同時に追加できます.この場合、コンテナは各ネットワークにipがあり、このコンテナはネットワークのコンテナネットワークに接続できます.ネットワーク間のコンテナネットワークが通じません.