本文将继续研究docker的network基础知识, 将通过若干简单试验进一步认识到多个container如何使用network model进行通信,以及如何自定义一个network.
none模式下的多个container
启动两个container加入 none中
[root@host31 ~]# docker run -it --network=none centos /bin/bash
[root@a2a37d0ddc0b /]#
[root@host31 ~]# docker run -it --network=none centos /bin/bash
[root@b8b7f66f1c12 /]#
启动后container的确认
[root@host31 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b8b7f66f1c12 centos "/bin/bash" 41 seconds ago Up 41 seconds determined_visvesvaraya
a2a37d0ddc0b centos "/bin/bash" 54 seconds ago Up 53 seconds jovial_goldstine
[root@host31 ~]#
docker network inspect none确认详细
[root@host31 ~]# docker network inspect none
[
{
"Name": "none",
"Id": "a157ec9146b720cb38981fa1a22390b60c78fcd4396a1d50d979427f480799d6",
"Scope": "local",
"Driver": "null",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": null,
"Config": []
},
"Internal": false,
"Containers": {
"a2a37d0ddc0b5915422ce5ec5948ef715acfe84110abed11100373c4fc89c37a": {
"Name": "jovial_goldstine",
"EndpointID": "f0acf4f20f924a5fe5d6754fbfb61aa458e87500f02a564736c197fb7207f43d",
"MacAddress": "",
"IPv4Address": "",
"IPv6Address": ""
},
"b8b7f66f1c12354fe784092697c93531d2966a0dee27ce301a558ba1dfd5b975": {
"Name": "determined_visvesvaraya",
"EndpointID": "91e7e7e1b1a5bfe7188be69baae53b01c181978094b2f19010b949fc6ebd1527",
"MacAddress": "",
"IPv4Address": "",
"IPv6Address": ""
}
},
"Options": {},
"Labels": {}
}
]
[root@host31 ~]#
从inspect的结果可以清楚地看到IPv4Address根本都没有被设定,基本应该只有lo的127.0.0.1,所以none的模式下多个container即使在同一个network中也无法相互之间通信。
host模式下的多个container
启动两个container加入 host中,host模式下,容器与主机共享网络Namespace,拥有与主机相同的网络设备。
[root@host31 ~]# docker run -it --network=host --name host_container1 centos /bin/bash
[root@host31 /]#
[root@host31 ~]# docker run -it --network=host --name host_container2 centos /bin/bash
[root@host31 /]#
启动后container的确认
[root@host31 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
91223e0ce984 centos "/bin/bash" 39 seconds ago Up 38 seconds host_container2
f7d361caf164 centos "/bin/bash" 52 seconds ago Up 52 seconds host_container1
[root@host31 ~]#
docker network inspect host确认详细
[root@host31 ~]# docker network inspect host
[
{
"Name": "host",
"Id": "58211460fd1f3da1bbc392a43ddd2b79a8bec663620b7783cefcf910940ddcd9",
"Scope": "local",
"Driver": "host",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": null,
"Config": []
},
"Internal": false,
"Containers": {
"91223e0ce984105d5dfa24260148bc0dc9254c7211d0ca6e76faf54cd9d3c42f": {
"Name": "host_container2",
"EndpointID": "bc0adbea4290527df3fe23d353a45ba324567de143d8b57f2dc195046cdfeee1",
"MacAddress": "",
"IPv4Address": "",
"IPv6Address": ""
},
"f7d361caf164f67a3a5670dd9f2b826ccd2054c17989bf101a81b78480a69101": {
"Name": "host_container1",
"EndpointID": "06e60004d1e06