序文
このノートでは、ドッキングウィンドウの公式サイトのチュートリアルカスタムブリッジネットワークの練習。
ユーザーが最善の方法に本番環境でのブリッジネットワークをカスタマイズすることが推奨されているので、このチュートリアルに特別な注意を払います。
このチュートリアルでは、2個の開始alpine
彼らは、ユーザー定義のネットワークに取り付けられたコンテナを、alpine-net
。これらの容器はをデフォルトに接続できないbridge
ネットワーク。そして、第三の容器開始alpine
デフォルトに接続されbridge
たネットワークを。第四の容器alpine
二つのネットワークに接続されています。
私は、関連する注記がにまとめて、ドッカーコンテナ技術を学んでいるドッカーコンテナ技術の研究ノートの概要
1高山ネットネットワークを作成します。
# docker network create --driver bridge alpine-net
694e28e19bbc5083491ee0d5c75b6fc8aef6c4274582be9f5a7c0184abb8f087
2一覧ネットワーク
# docker network ls
NETWORK ID NAME DRIVER SCOPE
694e28e19bbc alpine-net bridge local
02231307198a bridge bridge local
81b1d878dd80 host host local
194a422ad895 none null local
ビューのネットワーク高山ネット
# docker network inspect alpine-net
[
{
"Name": "alpine-net",
"Id": "694e28e19bbc5083491ee0d5c75b6fc8aef6c4274582be9f5a7c0184abb8f087",
"Created": "2020-02-08T20:14:17.312752369+08:00",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": {},
"Config": [
{
"Subnet": "192.168.80.0/20",
"Gateway": "192.168.80.1"
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {},
"Options": {},
"Labels": {}
}
]
ネットワークalpine-net
ゲートウェイは192.168.80.1で、デフォルトのbridge
ネットワーク異なります。
3 4つのコンテナを作成します。
# docker run -dit --name alpine1 --network alpine-net alpine ash
8e0ab36ed621c23b0fb50256f4e67f3ee22eb114400e37a5c71bd22275b9668b
# docker run -dit --name alpine2 --network alpine-net alpine ash
347af28200e49c07a1b6845387ce9abf8d0dd34a21680145097d638b73b0f4c8
# docker run -dit --name alpine3 alpine ash
bf038a99bceec1d897cc60c7de0548e296ab308f9486691279172524e74aeb18
# docker run -dit --name alpine4 --network alpine-net alpine ash
4c192d113af8513acd39cacb36d668604cecfafe990801d5e37f17e500c322aa
# docker network connect bridge alpine4
#
# docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4c192d113af8 alpine "ash" 2 minutes ago Up 2 minutes alpine4
bf038a99bcee alpine "ash" 2 minutes ago Up 2 minutes alpine3
347af28200e4 alpine "ash" 2 minutes ago Up 2 minutes alpine2
8e0ab36ed621 alpine "ash" 2 minutes ago Up 2 minutes alpine1
図4は、再びネットワークブリッジと高山ネットを見ます
# docker network inspect bridge
[
{
"Name": "bridge",
"Id": "02231307198a766660ed883e7117e65d04dbc0a111b68ce6b65e9f50e4887674",
"Created": "2019-09-10T15:39:22.052117578+08:00",
"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,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {
"4c192d113af8513acd39cacb36d668604cecfafe990801d5e37f17e500c322aa": {
"Name": "alpine4",
"EndpointID": "35e16d957e312067b77354a7d7febd95e3d168b66508a859db3c6c15743639cd",
"MacAddress": "02:42:ac:11:00:04",
"IPv4Address": "172.17.0.4/16",
"IPv6Address": ""
},
"bf038a99bceec1d897cc60c7de0548e296ab308f9486691279172524e74aeb18": {
"Name": "alpine3",
"EndpointID": "d7749027672de5a6a265e7f9245446b2bdfd9df6474eb327e11a5ad7a2393328",
"MacAddress": "02:42:ac:11:00:03",
"IPv4Address": "172.17.0.3/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": {}
}
]
alpine3
、alpine4
に接続されbridge
たネットワーク。
# docker network inspect alpine-net
[
{
"Name": "alpine-net",
"Id": "694e28e19bbc5083491ee0d5c75b6fc8aef6c4274582be9f5a7c0184abb8f087",
"Created": "2020-02-08T20:14:17.312752369+08:00",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": {},
"Config": [
{
"Subnet": "192.168.80.0/20",
"Gateway": "192.168.80.1"
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {
"347af28200e49c07a1b6845387ce9abf8d0dd34a21680145097d638b73b0f4c8": {
"Name": "alpine2",
"EndpointID": "82dc832bd1f0d8406039c30964f8c5c31cc393cb0dd53c9758bf0c52f52da4ca",
"MacAddress": "02:42:c0:a8:50:03",
"IPv4Address": "192.168.80.3/20",
"IPv6Address": ""
},
"4c192d113af8513acd39cacb36d668604cecfafe990801d5e37f17e500c322aa": {
"Name": "alpine4",
"EndpointID": "09fcc106f88b619d32204fa6399c9bfdbda34822de4035a9f5295f6db841c859",
"MacAddress": "02:42:c0:a8:50:04",
"IPv4Address": "192.168.80.4/20",
"IPv6Address": ""
},
"8e0ab36ed621c23b0fb50256f4e67f3ee22eb114400e37a5c71bd22275b9668b": {
"Name": "alpine1",
"EndpointID": "1b8782cb01f48f19b34e8caf4fcc08a66e326fa60c6af8743b7e40434302b93b",
"MacAddress": "02:42:c0:a8:50:02",
"IPv4Address": "192.168.80.2/20",
"IPv6Address": ""
}
},
"Options": {},
"Labels": {}
}
]
コンテナはalpine1
、alpine2
、alpine4
に接続されalpine-net
たネットワーク。
ネットワーク内の容器と5は、通信することができます。
alpine1
そして、それはすることができalpine2
、alpine4
通信、および血管名を介して直接通信することができます。
ユーザ定義のネットワークでは、IPアドレスが容器を通ってのみ通信するために、IPアドレスは、コンテナの名前を解析することによって得ることができます。この機能は、自動サービスディスカバリ自動サービス検出と呼ばれています。
# docker attach alpine1
/ # ping -c 2 alpine2
PING alpine2 (192.168.80.3): 56 data bytes
64 bytes from 192.168.80.3: seq=0 ttl=64 time=0.113 ms
64 bytes from 192.168.80.3: seq=1 ttl=64 time=0.095 ms
--- alpine2 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 0.095/0.104/0.113 ms
/ # ping -c 2 alpine4
PING alpine4 (192.168.80.4): 56 data bytes
64 bytes from 192.168.80.4: seq=0 ttl=64 time=0.100 ms
64 bytes from 192.168.80.4: seq=1 ttl=64 time=0.089 ms
--- alpine4 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 0.089/0.094/0.100 ms
/ # ping -c 2 alpine1
PING alpine1 (192.168.80.2): 56 data bytes
64 bytes from 192.168.80.2: seq=0 ttl=64 time=0.029 ms
64 bytes from 192.168.80.2: seq=1 ttl=64 time=0.060 ms
--- alpine1 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 0.029/0.044/0.060 ms
/ #
異なるネットワークの容器は通信できません6
alpine1
これは、接続することができないalpine3
ことではないので、alpine-net
ネットワーク。
だけでなく、合格するには、ipでpingを実行することはできませんコンテナ名をpingすることはできません。
/ # ping -c 2 alpine3
ping: bad address 'alpine3'
/ # ping -c 2 172.17.0.3
PING 172.17.0.3 (172.17.0.3): 56 data bytes
--- 172.17.0.3 ping statistics ---
2 packets transmitted, 0 packets received, 100% packet loss
容器を取り外すalpine1
クイックコマンドを使用してCTRL + p
、CTRL + q
(CTRL入力pおよびq)。
複数の容器に接続された7ネットワークが複数のネットワークと通信することができます。
alpine4
デフォルトへの接続bridge
やalpine-net
ネットワーク、それは他のコンテナと通信することができます。しかしalpine3
、それはデフォルトであるように、容器の必要性は、そのIPアドレスを通信するbridge
ネットワーク。
# docker attach alpine4
/ # ping -c 2 alpine1
PING alpine1 (192.168.80.2): 56 data bytes
64 bytes from 192.168.80.2: seq=0 ttl=64 time=0.105 ms
64 bytes from 192.168.80.2: seq=1 ttl=64 time=0.097 ms
--- alpine1 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 0.097/0.101/0.105 ms
/ # ping -c 2 alpine2
PING alpine2 (192.168.80.3): 56 data bytes
64 bytes from 192.168.80.3: seq=0 ttl=64 time=0.104 ms
64 bytes from 192.168.80.3: seq=1 ttl=64 time=0.085 ms
--- alpine2 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 0.085/0.094/0.104 ms
/ # ping -c 2 alpine3
ping: bad address 'alpine3'
/ # ping -c 2 alpine4
PING alpine4 (192.168.80.4): 56 data bytes
64 bytes from 192.168.80.4: seq=0 ttl=64 time=0.039 ms
64 bytes from 192.168.80.4: seq=1 ttl=64 time=0.057 ms
--- alpine4 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 0.039/0.048/0.057 ms
/ # ping -c 2 172.17.0.3
PING 172.17.0.3 (172.17.0.3): 56 data bytes
64 bytes from 172.17.0.3: seq=0 ttl=64 time=0.112 ms
64 bytes from 172.17.0.3: seq=1 ttl=64 time=0.089 ms
--- 172.17.0.3 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 0.089/0.100/0.112 ms
図8は、すべてのネットワークホストブリッジドライバベースのネットワーク上で回転させることができます
最後に、かどうかを次のいくつかのコンテナができUnicom社のネットワークをテストします。
/ # ping -c 2 baidu.com
PING baidu.com (220.181.38.148): 56 data bytes
64 bytes from 220.181.38.148: seq=0 ttl=248 time=35.715 ms
64 bytes from 220.181.38.148: seq=1 ttl=248 time=35.568 ms
--- baidu.com ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 35.568/35.641/35.715 ms
/ # read escape sequence
# docker attach alpine1
/ # ping -c 2 baidu.com
PING baidu.com (39.156.69.79): 56 data bytes
64 bytes from 39.156.69.79: seq=0 ttl=248 time=38.493 ms
64 bytes from 39.156.69.79: seq=1 ttl=248 time=38.408 ms
--- baidu.com ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 38.408/38.450/38.493 ms
/ # read escape sequence
# docker attach alpine3
/ # ping -c 2 baidu.com
PING baidu.com (220.181.38.148): 56 data bytes
64 bytes from 220.181.38.148: seq=0 ttl=248 time=37.688 ms
64 bytes from 220.181.38.148: seq=1 ttl=248 time=37.655 ms
--- baidu.com ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 37.655/37.671/37.688 ms
9停止し、すべてのコンテナや高山ネットネットワークを削除
停止し、すべてのコンテナや高山ネットネットワークを削除します。
# docker stop alpine1 alpine2 alpine3 alpine4
# docker rm alpine1 alpine2 alpine3 alpine4
# docker network rm alpine-net
概要
ネットワークコンテナ以下のルール:
- 同じネットワーク内でコンテナと通信することができます。
- 異なるネットワークのコンテナは通信できません
- ネットワークに接続された複数の容器は、複数のネットワークと通信することができます。
コマンド操作で:
コマンド | 機能 |
---|---|
ドッキングウィンドウのネットワークは、ネットワークを作成します | ネットワークを作成します。 |
ドッキングウィンドウのネットワークのRM NETWORK | 削除ネットワーク |
ドッキングウィンドウのネットワークLS | 上場ネットワーク |
ドッキングウィンドウのネットワークは、ネットワークを検査します | ビューの特定の細部へのネットワーク |
ドッキングウィンドウのネットワーク接続ネットワークCONTAINER | 容器は、ネットワークに接続されていました |
ドッキングウィンドウの実行--network NETWORK CONTAINER | コンテナを実行し、ネットワークを指定します |