Docker_学习笔记系列之网络

  1. 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.不同的子网如何互联,

建立自己的网络保证不同的服务处于不同的网络中,保证网络安全性

  1. redis集群 net1 192.168.1.0
  2. 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

©著作权归作者所有:来自51CTO博客作者mob604756e88498的原创作品,如需转载,请注明出处,否则将追究法律责任