Docker(六):Docker 网络

初识Docker0

    使用ip addr linux命令查看当前服务器网络状态

Docker(六):Docker 网络_第1张图片 ip addr

     注意:当服务器中已存在docker环境,那么服务器就会自动分配一个docker0地址

 

Docker(六):Docker 网络_第2张图片 docker network ls查看当前docker 网络信息
Docker(六):Docker 网络_第3张图片 通过docker network inspect 5a008c015cac查看docker0元数据信息

    查看容器内部网络

Docker(六):Docker 网络_第4张图片 查看容器内网络

     测试linux本地访问容器

docker0和容器属于同一网段,可以访问

     运行一个容器后再次查看本地网络状态

Docker(六):Docker 网络_第5张图片 再次查看服务器当前网络状态

     从上面可以得出docker每次启动一个容器,docker会为docker容器分配一对网络,如上图261->262,其中采用的是veth-pair技术,它是属于一对虚拟设备接口,成对出现,实现了各个虚拟网络设备的连接访问。

    再启动一个容器后,进行两者连接访问测试

容器间访问成功

    容器间访问原理

Docker(六):Docker 网络_第6张图片 容器间访问原理图

     结论:两个tomcat容器公用一个路由器docker0,在所有容器不指定网络的情况下,docker0会给容器分配默认IP(分配的ip个数取决于网络类型设置,比如局域网255.255.0.1/16就可以分配2的16次方-2个子网)

Docker(六):Docker 网络_第7张图片 docker使用docker0桥接且采用veth技术进行容器间访问

 注意:docker中网络接口都是虚拟的(因为虚拟传输效率高),一旦容器删除,对应的网络也会删除

docker0存在局限性:不支持通过容器名访问连接

    扩展 --link(可支持通过容器名访问连接)

Docker(六):Docker 网络_第8张图片 --link实现容器名访问连接

Docker(六):Docker 网络_第9张图片 --link本质就是在host文件中增加了需要的网络信息

 注意:通过--link只支持单向添加,而不能互相都可以访问

结论:实际企业项目开发通常采用自定义网络,而不会使用docker0

自定义网络(容器互联)

     查看当前网络信息

Docker(六):Docker 网络_第10张图片 Name栏位代表网络模式

     创建自定义的网络

Docker(六):Docker 网络_第11张图片 自定义网络

     查看创建的网络信息

Docker(六):Docker 网络_第12张图片 自定义网络详细信息

     自定义的网络中创建容器

自定义网络桥接容器

     再次查看自定义网络信息

Docker(六):Docker 网络_第13张图片 已包含创建的容器网络信息

     测试连接

Docker(六):Docker 网络_第14张图片 自定义网络可实现ip和容器名访问连接

网络连通

Docker(六):Docker 网络_第15张图片 如何实现tomcat-01访问tomcat-net-01?

     解决方案

容器连接到另一个网络
Docker(六):Docker 网络_第16张图片 将容器加入到了另一个网段中

         测试连通成功

实现了不同网段之间容器的连通

当需要跨网络(不同网段)操作,我们可以使用docker network connect  xxxxx xxx连通!

实战之部署Redis集群

Docker(六):Docker 网络_第17张图片 redis集群

     创建网络以及redis

Docker(六):Docker 网络_第18张图片 创建网络以及redis

      依次创建6个redis

Docker(六):Docker 网络_第19张图片
redis-6

     创建集群

创建集群

     验证集群创建成功

Docker(六):Docker 网络_第20张图片 集群创建成功

说明:集群搭建成功,若Master宕机,则对应绑定的Slave则会升级为Master继续服务,实现服务高可用!

你可能感兴趣的:(Docker,java,docker)