- 场景
- 1、docker0的网卡
- 测试案例
- 自定义网络配置
- 指定案例模式
- 定义自定义的网络配置模式
- 容器连通
- 4、网络连通
- 总结
多个容器之间如何通过网络连接,因为最终容器都是启动不同进程,jar工程连接redis容器,连接mysql容器如何通信。
1、docker0的网卡ip addr# 查看网卡信息或者ifconfig
目前安装了docker虚拟机中,有三类网卡信息
- lo:本地回环地址,127.0.0.1
- ens33:本机虚拟网卡,如果是物理机,物理网卡。在虚拟机中,网卡名字centos redhat debian版本不同,名字不同(eth0)
- docker0:这是我们安装docker之后自动配置的虚拟网络
每个安装了docker0的网卡,是一个桥接网卡,可以绑定这个网卡的容器联通桥接在一起
创建两个tomcat容器,tomcat01,一个tomcat02
每次创建容器可以通过–net选项执行网卡,如果没有指定网卡,那么容器就默认使用docker0,而且分配一个容器的ip地址。
通过inspect 命令查看
继续查看ip addr信息,发现多了网卡。
docker 容器的创建,网络–net没有添加,自动选择docker0桥接,虚拟网卡桥接技术使用vethpair(配对)技术。demo91联通的是网关docker0,demo2联通的是网卡docker2
所以通过docker0,demo1,demo2可以相互ping通
veth-pair总是一对一对的出现,每当创建一个容器,在Docker0就会挂载一对中的一个
tomcat01和docker0之间联通,这就是一对虚拟网卡的联通,通过docker0桥接,可以在tomcat中去访问联通tomcat02
相关命令是network
docker network --help docker network ls#查看当前宿主机中容器在网络相关内容
name有三种,bridge,host,none也是三种网络模式
网络模式有四种:
- bridge:桥接模式
- none:不配值模式,允许用户后续进入容器自定义配置的
- host:共享宿主机网络,也就是直接使用宿主机ip地址和网络端口
- container:是容器和另外一个容器共享network namespace。kubernetes中大的pod就是多个容器共享一个network namespace.
- 用户自定义的网络配置,也是我们接下来要使用的
查看网络配置
docker network inspect bridge
可以在返回结果中看到containers属性中,当前使用docker0网卡的所有容器信息
指定案例模式docker run -itd --name tomcat1 -P --net bridge tomcat:9.0
如果是none,无法启动访问配置,因为没有网络
如果使用宿主机网络ip,我们可以直接访问查看启动192.168.19.160:8080
让容器之间使用名字相互连通
docker network create --driver bridge --subnet 192.168.199.0/16 --gateway 192.168.199.1 mynet
- create 表示创建一个自定义的网络
- –driver bridge 当前自定义网络的类型是bridge桥接
- –subnet子网网段192.168.199.0,只要在这个网段都属于同一个连通范围
- –gateway定义网关192.168.199.1
mynet自定义网络名称
注意:这里必须是centos:centos7为镜像创建容器,不能是tomcat镜像
docker run -itd --name tomcat4 -P --net mynet centos:centos7 docker run -itd --name tomcat3 -P --net mynet centos:centos7 docker exec -it tomcat3 ping tomcat44、网络连通
能不是使用默认桥接的网络容器,连接自定义网络的容器
创建一个默认网络配置tomcat3
docker run -itd --name tomcat3 -p centos:centos7
和自定义的网络的容器tomcat1无论使用容器名还是ip都不能ping通
docker可以实现将不同的网络的容器连接在一起
将tomcat3链接到自定义网络mynet中
就可以ping通了
实际上在链接之后,给tomcat3分配了一个mynet地址192.168.0.3



