Docker基础-14-网络-bridge模式和docker0详解

这篇来学习docker中的一种网络模式叫bridge,同时docker中单机网络还有host模式和none模式。这篇来详细学习下bridge,这个bridge就是表现形式就是前面我们看到的docker0这个网络接口。多个容器都是通过docker0这个接口,然后才行通信。也通过docker0去和本机的以太网接口连接,所以容器内部才能访问外面,例如下载软件等操作。

 

环境准备

为了下面练习,我们先准备以下环境,本机上只允许一个test1的busybox的容器。

学习新命令 docker network ls

我们通过docker network命令,可以看到本机docker环境有三种网络模式,我们这篇只学习bridge,中文意思就是桥接, bridge是docker网络中最重要的一种网络模式。上面我们容器其实是通过连接到bridge上的,下面就来证明这个结论。

通过docker network inspect bridge这个网络的ID,我们就可以查看这个bridge网络有哪些容器使用了它。观察打印出来的json内容,找到containers字段。

我们看到了容器名称和容器id和容器的MAC和IP地址,这说明了这个容器连到了bridge这个网络上面。下面来讨论,这个bridge到底是一个什么样的网络呢。下面,我们在linux本机输入ip link查看信息。

根据前面两篇的知识,我们知道红圈这个veth接口是由于新开了一个容器,就会在linux本机产生一个网络命名空间,而且是成对出现,也就是容器里面还有一个接口和这个是一对进行连接的。下面我们查询这个busybox容器的ip link信息。

红圈加箭头连接的是一对,这一对都连接到docker0上。下面来看看怎么证明vveth5919ecf是连接到了docker0上面。

 

先安装一个工具包,在外层linux本机上执行以下命令,yum install  -y  bridge-utils

然后输入命令brctl show来查看

到这里,我们两个容器其中一端配对的接口都连接到了docker0网络,由于容器里接口和容器外linux上一个接口是配对。这个画面,很容易让我们想起前面文章的一个图片,两个容器通信的图片。

其实这个图也很像现在生活中的多个电脑连接到路由器,所以电脑之间能通信的原理。这篇,我们通过学习和了解docker0这个网络,再次解释了多个容器之间通信的原理。下面,提一下,容器内部为什么能上网的原因。

这里我容器能连接百度网站,当然我外层linux机器能上网。下面这张图解释了容器是如何通过外层主机访问internet。

这个图中eth0表示我们外层linux主机,这个主机eth0网卡是能够访问internet。关键的点就是docker0通过NAT(网络地址转换)的机制访问到eth0上,从而访问internet网络。其实,在一个公司,甚至几百台电脑能上网,都是通过NAT技术来实现的。一个公司可能就一个公网IP地址,几百台电脑组成局域网,所有电脑都能上网,都是从这个公网地址出去。有兴趣的,可以去网上搜索NAT了解更多信息。


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Mr. Sun_

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值