前言
自定义网络
建议使用自定义的网桥来控制哪些容器可以相互通信,还可以自动DNS解析容器名称到IP地址。Docker提供了创建这些网络的默认网络驱动程序,你可以创建一个新的Bridge网络,Overlay或Macvlan网络。你还可以创建一个网络插件或远程网络进行完整的自定义和控制。
你可以根据需要创建任意数量的网络,并且可以在任何给定时间将容器连接到这些网络中的零个或多个网络。此外,您可以连接并断开网络中的运行容器,而无需重新启动容器。当容器连接到多个网络时,其外部连接通过第一个非内部网络以词法顺序提供。
一、容器间通信
1.创建一个bridge模式的网络
[root@server1 ~]# docker network create --driver bridge my_net1
由上图我们可以看到创建的网络ID为88cd89998134,使用ip addr查看本机网络:
查看docker自定义网络如下图,当我们创建好自定义网络后,自定为起分配IP网段和网关
docker network inspect my_net1
docker的bridge自定义网络之间默认是有域名解析的;
docker的bridge自定义网络与系统自带的网桥之间默认是有解析的;
但是docker的系统自带的网桥之间默认是没有解析的。
2.再创建一个bridge的网络,自定义ip和网关
[root@server1 ~]# docker network create --driver bridge --subnet 172.20.0.0/24 --gateway 172.20.0.1 my_net2
f81bcce7691795311aadeb0815295c9ef5ac240b86bcc1317777734cfc83319a
[root@server1 ~]#
[root@server1 ~]# docker network ls
NETWORK ID NAME DRIVER SCOPE
bc0331260bb7 bridge bridge local
2da931af3f0b host host local
88cd89998134 my_net1 bridge local
f81bcce76917 my_net2 bridge local
63d31338bcd9 none null local
[root@server1 ~]#
[root@server1 ~]# docker network inspect my_net2
"IPAM": {
"Driver": "default",
"Options": {},
"Config": [
{
"Subnet": "172.20.0.0/24",
"Gateway": "172.20.0.1"
}
]
},
[root@server1 ~]# ip a
9: br-f81bcce76917: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN
link/ether 02:42:03:a3:1c:fb brd ff:ff:ff:ff:ff:ff
inet 172.20.0.1/24 brd 172.20.0.255 scope global br-f81bcce76917
valid_lft forever preferred_lft forever
3.使用刚刚创建的网络建立容器
[root@server1 ~]# docker load -i ubuntu.tar
[root@server1 ~]# docker run -it --name vm1 --network=my_net1 ubuntu
root@b9186e3ba2e6:/# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
10: eth0@if11: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:ac:12:00:02 brd ff:ff:ff:ff:ff:ff
inet 172.18.0.2/16 brd 172.18.255.255 scope global eth0
valid_lft forever preferred_lft forever
root@b9186e3ba2e6:/#
4.另开一个shell,再创建一个容器,使用网络my_net2
##使用–ip参数可以指定容器ip地址,但必须是在自定义网桥上(自定义的ip地址和网关地址),
默认的bridge模