Docker自定义网络
一、自定义网络
1、创建 自定义网络
Docker默认会提供三种网络模式 分别为:bridge、host、none 如下:
docker network ls
NETWORK ID NAME DRIVER SCOPE
c0d8c8724276 bridge bridge local
f825b901d9d9 host host local
52942451d07c none null local
创建 mynet-1
网络
docker network create --driver bridge --subnet 10.10.14.0/24 --gateway 10.10.14.1 mynet-1
--driver
:指定网络模式--subnet
: 指定网段--gateway
:指定网关
[root@instance-xsv07pjt ~]# docker network ls
NETWORK ID NAME DRIVER SCOPE
c0d8c8724276 bridge bridge local
f825b901d9d9 host host local
897d03c61772 mynet-1 bridge local
52942451d07c none null local
2、通过 mynet-1
网络创建两台容器是否可以相互通信?
docker run -itd --name nginx-1 --network mynet-1 nginx:1.18.0
docker run -itd --name nginx-2 --network mynet-1 nginx:1.18.0
docker exec nginx-1 curl http://nginx-2
总结:在一个网络里面的容器是可以相互通信的。
3、再创建 mynet-2
网络, mynet-1
网络容器和 mynet-2
网络容器是否可以通信?
docker network create --driver bridge --subnet 10.10.15.0/24 --gateway 10.10.15.1 mynet-2
docker run -itd --name mynet-1 --network mynet-1 nginx:1.18.0
docker run -itd --name mynet-2 --network mynet-2 nginx:1.18.0
容器名称 | IP地址 | 网络 |
---|---|---|
mynet-1 | 10.10.14.2 | mynet-1 |
mynet-2 | 10.10.15.2 | mynet-2 |
思考一下 mynet-1
和mynet-2
是否可以通信呢?
docker exec mynet-1 curl mynet-2
答:不能,因为不在一个网络里面,不能访问到彼此
二、不同网络通信
两个不同网络的容器可以通过 connect
进行打通网络
# 为mynet-2容器打通mynet-1网络
docker network connect mynet-1 mynet-2
其实也就是添加双网卡
docker inspect mynet-2