11.docker的网络-docker0的理解及bridge网桥模式的介绍与实例

这篇具有很好参考价值的文章主要介绍了11.docker的网络-docker0的理解及bridge网桥模式的介绍与实例。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.docker0的基本理解

安装完docker服务后,我们首先查看一下宿主机的网络配置

ifconfig

windows docker0网桥,Docker,docker的网桥模式,docker容器互通,evth-pair,docker的docker0

我们可以看到,docker服务会默认在宿主机上创建一个虚拟网桥docker0,该网桥网络的名字称为docker0。它在内核层连通了其他物理或者虚拟网卡,这就可以将所有容器和宿主机都放在了同一个物理网络。Docker默认指定了docker0接口的IP和子网掩码,让宿主机和容器之间可以通过网桥相互通信。

2.使用默认的bridge演示容器网路的相互连通

这里我们使用之前构建的一个tomcat镜像来演示,可以参考之前的文章
8.使用Dockerfile构建centos7+jdk8+tomcat8镜像

2.1 测试容器与宿主机的网络互通

2.1.1 启动一个tomcat容器

先启动一个tomcat容器t1,对映射的端口为8901

docker run -d -p 8901:8080 --name t1 donkey/tomcat8:1.0.0

windows docker0网桥,Docker,docker的网桥模式,docker容器互通,evth-pair,docker的docker0

2.1.2 查看容器的网络

docker exec -it t1 ip addr

windows docker0网桥,Docker,docker的网桥模式,docker容器互通,evth-pair,docker的docker0
可以看到,容器的ip为172.17.0.2

2.1.3 查看宿主机的ip

windows docker0网桥,Docker,docker的网桥模式,docker容器互通,evth-pair,docker的docker0
可以看到,宿主机的ip 10.0.16.9

2.1.4 测试宿主机能够连通容器

ping 172.17.0.2

windows docker0网桥,Docker,docker的网桥模式,docker容器互通,evth-pair,docker的docker0

2.1.5 测试宿主机能够连通容器

# 先进入容器内部
docker exec -it t1 /bin/bash
# ping 宿主机
ping 10.0.16.9

windows docker0网桥,Docker,docker的网桥模式,docker容器互通,evth-pair,docker的docker0

2.2 测试容器与容器的网络互通

2.2.1 再启动一个tomcat容器

docker run -d -p 8902:8080 --name t2 donkey/tomcat8:1.0.0

windows docker0网桥,Docker,docker的网桥模式,docker容器互通,evth-pair,docker的docker0

2.2.2 查看当前容器t2的ip地址

docker exec -it t2 ip addr

windows docker0网桥,Docker,docker的网桥模式,docker容器互通,evth-pair,docker的docker0
t2的ip地址为172.17.0.3

2.1.3 测试容器之间能够连通

2.1.3.1 容器t1来ping容器t2
docker exec -it t1 ping 172.17.0.3

windows docker0网桥,Docker,docker的网桥模式,docker容器互通,evth-pair,docker的docker0

2.1.3.2 容器t2来ping容器t1
docker exec -it t2 ping 172.17.0.2

windows docker0网桥,Docker,docker的网桥模式,docker容器互通,evth-pair,docker的docker0

2.1.3.3 小结

通过上面t1和t2两个容器的实例我们可以看到,使用默认的网络bridge,容器之间是可以网络互通的

3.bridge模式容器网路的相互连通的原理

前面我们提到,只要服务器上安装了docker,那么宿主机上就会安装一个虚拟的docker0网卡。我们每启动一个docker容器,docker就会给容器分配一个ip。如我们启动的t1、t2两个容器
windows docker0网桥,Docker,docker的网桥模式,docker容器互通,evth-pair,docker的docker0
windows docker0网桥,Docker,docker的网桥模式,docker容器互通,evth-pair,docker的docker0
他们都有自己的分配的一个ip。
然后使用evth-pair技术,利用桥接模式,内部容器与外部宿主机进行连通。那什么是evth-pair技术呢?
evth-pair:就是一对虚拟设备接口,他们都是成对出现的,一段连着协议,一段彼此相连。正因为有有了这个特性,充当一个桥梁,连接各种虚拟网络设备。
以容器t1为例,我们查看他的ip地址:
windows docker0网桥,Docker,docker的网桥模式,docker容器互通,evth-pair,docker的docker0
t1容器有个72号ip地址,eth0@if73
再看宿主机:
windows docker0网桥,Docker,docker的网桥模式,docker容器互通,evth-pair,docker的docker0
有个73号ip,vethd926bf2@if72,这样容器t1的72绑定了宿主机上的73,宿主机上的73绑定了容器上的72,这样容器和宿主机组成了一对。也就是说,启动一个容器,会生成一对一对的网卡,也就是虚拟技术接口。
我们再看下容器t2是不是也是这样呢?
容器t2的ip地址,有个74号eth0@if75
windows docker0网桥,Docker,docker的网桥模式,docker容器互通,evth-pair,docker的docker0
再看宿主机,有个有个75号vethe12ed59@if74
windows docker0网桥,Docker,docker的网桥模式,docker容器互通,evth-pair,docker的docker0
也是成对出现的。我们以一张图来更加直观的说明一下。
windows docker0网桥,Docker,docker的网桥模式,docker容器互通,evth-pair,docker的docker0

4.使用默认的bridge模式的弊端

通过上面的实例我们看到,使用默认的bridge网络模式很容易的解决了我们网络互通的问题,看着已经很完美了,但其实不然。
容器一旦删除,网卡也就消失了,容器再次重启,ip会变化;同时,每次docker容器启动,我都要查看这个容器的ip,然后才能进行连接,这样就导致连接非常不好用,如果能够像微服务那样,能够屏蔽掉IP地址,在这里直接使用服务名连接就好了。那我们使用容器名试一下行不行。
windows docker0网桥,Docker,docker的网桥模式,docker容器互通,evth-pair,docker的docker0
很不幸,ping不通,那怎么解决这个问题呢?之前可以使用–link来实现,但已经作废了,现在一般是采用自定义网络来实现。这个我们后续的博客再来单独分享吧。文章来源地址https://www.toymoban.com/news/detail-761155.html

到了这里,关于11.docker的网络-docker0的理解及bridge网桥模式的介绍与实例的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 解决:docker中桥接(bridge)模式下容器内网络不通

    #事故现场 在Ubuntu系统中,安装docker,并以bridge网络模式启动容器,网络不通(无法访问外网),但使用host网络模式没有问题。 #解决方法 刚开始怀疑是DNS问题,后来发现是route问题。 其中的一条route是错误的,需要删除: 问题解决!

    2024年02月11日
    浏览(37)
  • Docker学习:容器五种(3+2)网络模式 | bridge模式 | host模式 | none模式 | container 模式 | 自定义网络模式详解

    本讲是从Docker系列讲解课程,单独抽离出来的一个小节,重点介绍 容器网络模式 , 属于了解范畴,充分了容器的网络模式, 更有助于更好的理解Docker的容器之间的访问逻辑 。 疑问: 为什么要了解容器的网络模式? 首先, 容器之间 虽然不是物理隔离,但是它们彼此之间

    2024年02月09日
    浏览(33)
  • Docker0网络设置

    当部署运行Docker后,Docker在启动时会默认创建三个网络 bridge: 默认网络驱动程序。当不指定网络驱动运行容器时,默认会使用该网络。 host: 直接访问宿主机网络,取消容器和宿主机的网络隔离 host网络模式可以直接使用宿主机网络,但是在Windows和MacOS中,Docker是跑在虚拟机中

    2024年02月01日
    浏览(25)
  • linux网桥bridge详解

    Linux网桥(Bridge)是一种网络设备,用于连接并转发以太网数据包。它可以将多个以太网接口连接在一起,使它们成为一个逻辑上的以太网段。这样,在同一个网桥上的设备可以直接通信,就像它们连接在同一个物理以太网上一样。 下面是对Linux网桥的详细解释和一些相关概

    2024年02月06日
    浏览(44)
  • Linux Bridge(网桥)

    Linux Bridge简介 Linux Bridge(Linux网桥)是一个软件层面的网络设备,用于在Linux系统中创建和管理网络桥接。它允许将多个物理或虚拟网络接口连接在一起,以创建一个共享相同网络段的网络。 下面是Linux Bridge的一些关键特点和用途: 网络桥接:Linux Bridge允许将多个网络接口连

    2024年02月14日
    浏览(45)
  • K8S系列文章 之 容器网络基础 Docker0

    使用 ip addr 命令看一下网卡: 其中lo是本地回环地址,docker0就是docker0地址,也就是docker的地址172.17.0.1。 docker使用的是桥接模式,使用的技术是evth-pair技术,后面会解释。 比如有两个容器,容器A要去访问容器B,该如何访问?使用127.0.0.1吗?还是写docker0地址? 我们运行起一

    2024年02月14日
    浏览(44)
  • Docker中的bridge模式,可以这么设置

    最近有几个已经就业的小伙伴,过来问千锋健哥关于Docker网络配置的问题,他们在实际开发中还是有些疑问。关于Docker网络这一块的内容确实很多,为了让大家搞清楚这个问题,健哥准备搞几篇系列文章,来为各位小伙伴解惑。这次健哥带来的是Docker网络的Bridge模式,接下来

    2023年04月24日
    浏览(29)
  • 【设计模式——学习笔记】23种设计模式——桥接模式Bridge(原理讲解+应用场景介绍+案例介绍+Java代码实现)

    现在对不同手机类型的不同品牌实现操作编程(比如:开机、关机、上网,打电话等),如图 【对应类图】 【分析】 扩展性问题(类爆炸),如果我们再增加手机的样式(旋转式),就需要增加各个品牌手机的类,同样如果我们增加一个手机品牌,也要在各个手机样式类下增加。 违

    2024年02月15日
    浏览(32)
  • 十二、docker学习-docker核心docker网络之bridge网络(2)

    bridge网络 bridge网络表现形式就是docker0这个网络接口。容器默认都是通过docker0这个接口进行通信。也可以通过docker0去和本机的以太网接口连接,这样容器内部才能访问互联网。 ip a docker network ls docker network inspect bridge docker0详解 运行镜像 容器创建时IP地址的分配 Docker创建容器

    2024年02月11日
    浏览(35)
  • 【计算机网络】NAT及Bridge介绍

    七层模型介绍及举例 为通过网络将人类可读信息通过网络从一台设备传输到另一台设备,必须在发送设备沿 OSI 模型的七层结构向下传输数据,然后在接收端沿七层结构向上传输数据。 数据在 OSI 模型中如何流动 库珀先生想给帕尔梅女士发一封电子邮件。库珀先生在笔记本电

    2024年02月14日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包