Docker_02_网络

  • Docker网络
  • Docker0
  • evth-pair
  • 容器链接
  • Docker Networking


Docker网络

Docker0

Docker安装时,默认在主机上安装Docker0网桥

1)只要安装了Docker,就会有Docker0网卡(桥接模式)

2)容器启动时若没有指定网络模式下,都默认挂载到Docker0网桥上

3)属于Docker0的容器被启动时,Docker0会给该容器分配一个IP地址和网卡

4)通过Docker0就可实现容器和主机、容器和容器之间的互通(evth-pair技术)

5)Docker0特点:默认模式,域名不能访问(必须通过IP地址)

//容器被删除,对应IP地址和网卡也会被自动删除



缺陷:使用容器的IP做硬编码,若容器重启,则无法连接

//重启后,Docker会改变容器的IP



如:查看Docker0网卡相关信息

Docker 网络驱动 性能 docker0网卡down影响_Docker



如:创建两个Tomcat容器,观察网卡变换情况

1)ip addr查询主机网卡信息

Docker 网络驱动 性能 docker0网卡down影响_Docker 网络驱动 性能_02


2):启动一个Tomcat01容器,并查看其网卡信息

Docker 网络驱动 性能 docker0网卡down影响_Docker 网络驱动 性能_03


3)再次ip addr查询主机网卡信息

Docker 网络驱动 性能 docker0网卡down影响_Docker_04


4)再启动一个Tomcat02容器,并查看主机网卡信息

Docker 网络驱动 性能 docker0网卡down影响_Docker_05


5)再次ip addr查询主机网卡信息

Docker 网络驱动 性能 docker0网卡down影响_Docker_06


//宿主机中网卡以eth0为前缀命名,容器中网卡以veth为前缀命名


如:Docker0通过evth-pair技术实现容器可访问外网

Docker 网络驱动 性能 docker0网卡down影响_Docker_07

evth-pair

evth-pair:一对虚拟设备接口(总是成对出现)

1)一个连着协议,一个彼此相连(实现设备之间的桥梁)



如:续容器之间的通信就通过Docker0和evth-pair技术

Docker 网络驱动 性能 docker0网卡down影响_Docker 网络驱动 性能_08



如:容器Tomcat02通过Docker0去Ping容器Tomcat01的IP地址

Docker 网络驱动 性能 docker0网卡down影响_Docker 网络驱动 性能_09



如:新建容器Tomcat03去Ping容器Tomcat02

Docker 网络驱动 性能 docker0网卡down影响_网络_10

//容器之间互相Ping容器名是Ping不通的

容器链接

–link选项:实现容器之间的单向访问

格式:–link 被链接容器名:链接别名

1)本质:配置容器的hosts文件,使访问容器名时自动访问该地址(映射)

2)链接别名可省略,默认为被链接容器名

3)仅链接容器能主动访问被链接容器,且被链接容器不需向主机开放端口

4)仅能链接同一主机内的容器



如:新建容器Tomcat04去Ping容器Tomcat02

1)Tomcat04容器ping容器Tomcat02,并查看Tomcat04的/etc/hosts

Docker 网络驱动 性能 docker0网卡down影响_Docker 网络驱动 性能_11


2)Tomcat02容器ping容器Tomcat04,并查看Tomcat02的/etc/hosts

Docker 网络驱动 性能 docker0网卡down影响_docker_12

//反向是ping不通的(除非同时配置)容器tomcat02去ping容器tomcat04

Docker Networking

Docker Networking:用于容器之间连接的网络

1)容器可跨越宿主机通信

//由于用户可以自行创建网络,也称自定义网络



network命令:Docker网络操作

指令格式:docker network 选项

选项

含义

ls

列出主机内所有网络信息

inspect

列出指定网络的具体信息

create

创建自定义网络(默认为bridge类型)

connect

将容器连接至指定网络

disconnect

断开容器与网络的连接

prune

删除未使用的网络

rm

删除指定一个或多个网络


如:查看当前主机Docker所有网络信息

Docker 网络驱动 性能 docker0网卡down影响_网络_13



create选项:创建自定义网络

格式:create 选项 选项值

选项

含义

–driver

指定网络模式(默认为:bridge)

–subnet

指定网络子网掩码

–gateway

指定网关


如:创建自定义网络mynet

Docker 网络驱动 性能 docker0网卡down影响_Docker 网络驱动 性能_14



如:新建容器tomcat05和tomcat06分配在同一网络下,两个容器互相ping

1)新建容器,分配网络,并互相ping

Docker 网络驱动 性能 docker0网卡down影响_容器_15


2)查看mynet网络配置文件

Docker 网络驱动 性能 docker0网卡down影响_网络_16

//记录了两个容器网络相关信息,所以同一网络下的容器是可相互Ping通的



connect选项:将容器连接至指定网络

格式:connect 选项 选项值

选项

含义

–alias

指定容器在该网络的别名

–ip

指定容器在该网络的IP


如:使用容器tomcat01去ping容器tomcat05

1)tomcat01容器ping容器tomcat05,在加入对方网络后,再ping一次

Docker 网络驱动 性能 docker0网卡down影响_Docker 网络驱动 性能_17

2)tomcat01属于Docker0网络,tomcat05属于mynet网络

Docker 网络驱动 性能 docker0网卡down影响_网络_18

//同一网络下的容器的/etc/hosts文件仅有该网络下的其他容器的域名和IP,且该文件会根据网络配置文件动态更新(即使容器重启,也仍可找到)