Docker允许您创建自定义网络,以便更好地控制容器之间的通信。您可以使用Docker的内置桥接网络驱动程序来创建自定义网络,或者使用第三方网络驱动程序。
创建自定义网络的基本命令
docker network create #创建网络
docker network ls #查看网络
docker network inspect #查看网络的元数据
docker network connect #把网络连接到容器
docker network disconnect #把容器和网络分离
docker network rm #删除网络
一.创建网络
除了默认的名为 docker0
的 bridge
网络 , 还可以创建自己的 bridge
网络或 overlay
网络。
bridge
网络用于在本机内容器之间的互通
overlay
网络用于在不同主机内的容器之间的互通
创建一个bridge网络
运行命令docker network -d 指定要创建什么类型的网络
加入不使用 -d 参数,会创建bridge网络
docker network create -d bridge my-net
或者
docker network create my-net
查看网络源数据
docker network inspect my-net
[
{
"Name": "my-net",
"Id": "67b19436a9e361c8b9da4034c5903c4903444cecd3ecdbde62bbaf70828d49d9",
"Created": "2018-12-10T07:22:53.2694852Z",
"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": {},
"Options": {},
"Labels": {}
}
]
Doker 会为自定义的网络自动分配一个子网("Subnet": "172.18.0.0/16")。
创建一个 bridge网络并指定子网
创建一个网络并指定子网为 172.20.0.0/16
docker network create --subnet=172.20.0.0/16 my-net_172_20
$ docker network inspect my-net_172_20
[
{
"Name": "my-net_172_20",
"Scope": "local",
...略...
"Config": [
{
"Subnet": "172.20.0.0/16"
}
]
},
...略...
"ConfigOnly": false,
"Containers": {},
"Options": {},
"Labels": {}
}
]
把容器连接到网络
您可以将现有容器连接到一个或多个网络。
容器可以连接到使用不同网络驱动程序的网络,比如连接到
bridge
网络或者overlay
网络。连接后,容器可以使用其他容器的IP地址或名称进行通信。
现在将 container 加入到my-net 网络中
docker network connect my-net container
自定义的网络可以通过容器名进行通信 默认网络只能通过IP通信
从网络中断开一个容器的连接
docker network disconnect 网络名 容器名
删除一个自定义的网络
docker network rm 网络名