Docker篇——一篇文章彻底搞懂Docker网络底层原理、容器互联、自定义网络以及网络联通技术点,超详细、超细节!

理解Docker0网络

一、通过命令获取本机的ip信息

ip addr

原始状态就是3个网络

二、docker如何处理容器的网络访问的?
比如我们常见的如何实现kibana和ES的内部连接?
每次启动一个docker容器,docker就会给容器分配一个ip,ip都是成对出现分,这里使用的是evth-pair技术。我们只要是安装了docker,系统就会自带一个docker0,它的作用类似于路由器,使用桥接模式,连接容器和docker0

下图中的tomcat01和tomcat02是公用的一个路由docker0,所有的容器如果不指定网络,都是通过docker0来路由的。docker会给容器分配一个默认的可用的ip

三、总结
docker网络通信

容器互联--link

有一种场景是两个容器,我想要实现容器之间的通信,那么这时候简单的开启开两个容器是无法实现互相ping通的,所以这个时候就需要用到容器互联命令

一、命令
启动容器的时候,增加互联的命令,将来想要实现容器之间的联通问题,不需要再写ip,直接写服务名就行了

docker run -d -P --name tomcat03 --link tomcat02 tomcat #--link 想要连接的容器

注意:这样的方式,仅仅支持3连2,反向的2连3是不支持的

二、--link命令的底层原理
比如我们在tomcat03容器中配置了tomcat02,底层是在tomcat03的/etc/host文件中将tomcat02的ip写死了,将来直接可以通过Ping tomcat02就可以实现联通

三、补充说明
docker0和这种--link只了解即可,现在不推荐使用,现在都是自定义网络

自定义网络

一、查看所有的docker网络

docker network ls

网络模式详情:

二、移除网络

docker network rm 网络名称

三、当我们启动容器的时候,其实是默认的使用了docker0模式

docker run -d -P --name tomcat01 --net bridge(默认自带--net bridge) tomcat  

四、自定义网络

[root@test /]# docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet
#--driver bridge 配置网络模式
#--subnet 192.168.0.0/16 配置子网
#--gateway 192.168.0.1 配置网关,可以理解成路由器的地址
6f9ca43bff05db80c4de4ac6f84a2d49a272ab33c8240df938da755df0d647a3

[root@test /]# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
5d1b1c84aeb6        bridge              bridge              local
ef40e13a9d6b        host                host                local
6f9ca43bff05        mynet               bridge              local
fb5b58abbc43        none                null                local    

五、查看自己配置的网络信息

六、在自己创建的网络下面开启容器
这里区别前面的--net bridge,现在直接使用--net mynet即可

[root@test /]# docker run -d -P --name tomcat-net-01 --net mynet tomcat
5903ae19b321520fe5b298d45585f977dcf1e4bca0067d5d8944fa72ca371d6b
[root@test /]# docker run -d -P --name tomcat-net-02 --net mynet tomcat
07fecd3adfa7e04270c7c2295294af607a8631869584666a85c6f9491b03fc26

七、我们启动的两个容器,由于他们是在一个网络下,容器之间可以通过容器名进行联通(可以实现ping通)

八、自定义网络的好处
比如我们想搭建一个Redis或者MySQL集群,不同的集群使用不同的网络,保证集群是安全和健康的

网络联通

想要实现从Dockers0网络连接mynet网络,实现tomcat-01成功连接tomcat-net-01(所谓的一个容器,两个ip!),方法如下
1、使用命令
这里打通网络和容器之间的连接,需要用到connect命令

docker network connect mynet tomcat-01 #将tomcat-01连接到mynet网络上

2、查看mynet网络的元数据,发现联通后底层就是将tomcat-01,连接到了mynet网络上

docker network inspect mynet

3、测试能否实现tomcat-01ping通tomcat-net-01容器

4、总结
如果有人想实现跨网络操作其他的东西,可以通过使用docker network connect 来进行连通!

至此,你已经掌握了关于Docker网络的技术点,后续还会持续更新,敬请期待~

  • 9
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Be explorer

若认可笔者文章,手头富裕望支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值