dockerのコンテナネットワーク編
一、dockerネットワークモード
Dockerは、A、bridge--net=bridgeのデフォルトネットワークの5つのネットワークモードをサポートし、Dockerが起動するとdocker 0ブリッジが作成され、デフォルトで作成されたコンテナもこのブリッジに追加されます.B、host--net=hostコンテナは独立したnetwork namespaceを得るのではなく、シンクホストと1つ共用する.これは,コンテナが独自のNIC情報を持たずにホストホストを使用することを意味する.容器はネットワーク以外は隔離されています.C、none--net=noneは独立したnetwork namespaceを取得しますが、コンテナのネットワーク構成は一切行わず、手動で構成する必要があります.D、container--net=container:Name/IDは、指定したコンテナと同じnetwork namespaceを使用し、同じネットワーク構成情報を有し、2つのコンテナはネットワーク以外は隔離されています.E、カスタムネットワークはデフォルトのbridge原理と同じであるが、カスタムネットワークは内部DNS発見を備えており、コンテナ名またはホスト名コンテナ間のネットワーク通信が可能である.
二、実例のプレゼンテーション
カスタムネットワーク:
作成した2つのコンテナにはhelloネットワークが組み込まれており、ホスト名で通信できます.inspectでhelloネットワークの詳細を表示するには、次の手順に従います.
Dockerは、A、bridge--net=bridgeのデフォルトネットワークの5つのネットワークモードをサポートし、Dockerが起動するとdocker 0ブリッジが作成され、デフォルトで作成されたコンテナもこのブリッジに追加されます.B、host--net=hostコンテナは独立したnetwork namespaceを得るのではなく、シンクホストと1つ共用する.これは,コンテナが独自のNIC情報を持たずにホストホストを使用することを意味する.容器はネットワーク以外は隔離されています.C、none--net=noneは独立したnetwork namespaceを取得しますが、コンテナのネットワーク構成は一切行わず、手動で構成する必要があります.D、container--net=container:Name/IDは、指定したコンテナと同じnetwork namespaceを使用し、同じネットワーク構成情報を有し、2つのコンテナはネットワーク以外は隔離されています.E、カスタムネットワークはデフォルトのbridge原理と同じであるが、カスタムネットワークは内部DNS発見を備えており、コンテナ名またはホスト名コンテナ間のネットワーク通信が可能である.
二、実例のプレゼンテーション
カスタムネットワーク:
[root@localhost ~]# docker network create hello
c1ee291139357510355527cdbe44d625311d0ed4cb35828fb1d9d37fdfdca973
[root@localhost ~]# docker network ls
NETWORK ID NAME DRIVER SCOPE
881d091f073a bridge bridge local
c1ee29113935 hello bridge local
8dcf04c946c5 host host local
d21578b3d24e none null local
[root@localhost ~]# docker container run -itd --name=bs1 --net=hello busybox
Unable to find image 'busybox:latest' locally
latest: Pulling from library/busybox
8c5a7da1afbc: Pull complete
Digest: sha256:032ddd66f10483436e8a252e69fdfd20d0164e9953585c10d378183a0924db34
Status: Downloaded newer image for busybox:latest
a0d322ed58a7c0f0e38fa2405446bae4c0ac7208264a0f273f447ee0ec47c4cc
[root@localhost ~]# docker container run -itd --name=bs2 --net=hello busybox
ddfcb6a9f615c445a9fbd158dd339dd7ad1bc94e00197dd3224d45ab2bf0f04e
[root@localhost ~]# docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ddfcb6a9f615 busybox "sh" 24 seconds ago Up 23 seconds bs2
a0d322ed58a7 busybox "sh" 51 seconds ago Up 50 seconds bs1
[root@localhost ~]# docker exec -it bs2 sh
~ # ping bs1
PING bs1 (172.18.0.2): 56 data bytes
64 bytes from 172.18.0.2: seq=0 ttl=64 time=0.191 ms
64 bytes from 172.18.0.2: seq=1 ttl=64 time=0.120 ms
64 bytes from 172.18.0.2: seq=2 ttl=64 time=0.119 ms
64 bytes from 172.18.0.2: seq=3 ttl=64 time=0.122 ms
~ # ping bs2
PING bs2 (172.18.0.3): 56 data bytes
64 bytes from 172.18.0.3: seq=0 ttl=64 time=0.069 ms
64 bytes from 172.18.0.3: seq=1 ttl=64 time=0.086 ms
64 bytes from 172.18.0.3: seq=2 ttl=64 time=0.080 ms
作成した2つのコンテナにはhelloネットワークが組み込まれており、ホスト名で通信できます.inspectでhelloネットワークの詳細を表示するには、次の手順に従います.
[root@localhost ~]# docker network inspect hello
[
{
"Name": "hello",
"Id": "c1ee291139357510355527cdbe44d625311d0ed4cb35828fb1d9d37fdfdca973",
"Created": "2018-08-06T04:23:28.286872431+08:00",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": {},
"Config": [
{
"Subnet": "172.18.0.0/16",
"Gateway": "172.18.0.1"
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {
"a0d322ed58a7c0f0e38fa2405446bae4c0ac7208264a0f273f447ee0ec47c4cc": {
"Name": "bs1",
"EndpointID": "6fd7afaa55e71edb72f4ed5c22b792cfdc5fcb2aee2acd683c178f93503fcb8d",
"MacAddress": "02:42:ac:12:00:02",
"IPv4Address": "172.18.0.2/16",
"IPv6Address": ""
},
"ddfcb6a9f615c445a9fbd158dd339dd7ad1bc94e00197dd3224d45ab2bf0f04e": {
"Name": "bs2",
"EndpointID": "b2a0abdcc73e66b02b737c4960f1b85844472827c99a93be2e3a55dd9629da83",
"MacAddress": "02:42:ac:12:00:03",
"IPv4Address": "172.18.0.3/16",
"IPv6Address": ""
}
},
"Options": {},
"Labels": {}
}
]