- docker网络简介
bridge: 桥接 【docker默认】
docker network --help
-
docker每生成一个容器,就分配给容器一个ip,同事在宿主机增加一对网卡,即docker用的虚拟接口协议,通过evth-pair,充当一个桥梁,连接各种虚拟设备,默认通过docker0网关来通信的,采用桥接模式
- docker容器之间网络是互通的
8: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
link/ether 02:42:45:be:08:ce brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
valid_lft forever preferred_lft forever
inet6 fe80::42:45ff:febe:8ce/64 scope link
valid_lft forever preferred_lft forever
155146: veth93406a5@if155145: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker_gwbridge state UP
link/ether 4e:c7:49:8e:ed:e6 brd ff:ff:ff:ff:ff:ff link-netnsid 1
inet6 fe80::4cc7:49ff:fe8e:ede6/64 scope link
valid_lft forever preferred_lft forever
2.容器之间通过容器名通信--link【一般不使用】
启动两个容器,如test01,test02
下面这种方式就是通过容器名使test01 能够ping通test02
docker -d run --name test01 --link test02 nginx
docker exec -it test01 ping test02
但如果用test02去访问test01会出现不同,因为link的本质是做了服务名与ip的映射且是单向的,所以不通,除非test02-->test01也配上--link,本质是向hosts中增加映射
通过如下命令可查到
docker network inspect 网络编号
3.自定义网络
默认启动容器,有参数--net bridge,这个就是docker0
docker run -d -P --name tomcat01 tomcat
等同于 docker run -d -P --name tomcat01 --net bridge tomcat
docker0的特点:默认,域名不能直接访问,可通过--link打通,自定义是自动开通的
docker network create --help
docker network create --driver bridge --subnet 192.168.0.0/16 --gatway 192.168.0.1 myfirstnet
--driver 指定网络模式
--subnet 指定子网掩码
--gatway 指定网关
查看创建的网络
docker network inspect myfirstnet
使用自己创建的网络
docker run -d -P --name test001 --net myfirstnet
4.不同的子网如何互联,
建立自己的网络保证不同的服务处于不同的网络中,保证网络安全性
- redis集群 net1 192.168.1.0
- mysql集群 net2 192.168.2.0
原理:通过给容器设置两个ip,相当于向两个不同的网络各申请一个ip
docker network connect [OPTIONS] NETWORK CONTAINER [flags]
如使容器redis01与myslq01通信
docker network connect net2 redis01
上面的本质是将redis01在net2中申请了一个ip
docker network net2 inspect