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

2023-11-27 02:45

本文主要是介绍11.docker的网络-docker0的理解及bridge网桥模式的介绍与实例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.docker0的基本理解

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

ifconfig

在这里插入图片描述

我们可以看到,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

在这里插入图片描述

2.1.2 查看容器的网络

docker exec -it t1 ip addr

在这里插入图片描述
可以看到,容器的ip为172.17.0.2

2.1.3 查看宿主机的ip

在这里插入图片描述
可以看到,宿主机的ip 10.0.16.9

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

ping 172.17.0.2

在这里插入图片描述

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

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

在这里插入图片描述

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

2.2.1 再启动一个tomcat容器

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

在这里插入图片描述

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

docker exec -it t2 ip addr

在这里插入图片描述
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

在这里插入图片描述

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

在这里插入图片描述

2.1.3.3 小结

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

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

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

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

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

这篇关于11.docker的网络-docker0的理解及bridge网桥模式的介绍与实例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/426854

相关文章

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

如何用Docker运行Django项目

本章教程,介绍如何用Docker创建一个Django,并运行能够访问。 一、拉取镜像 这里我们使用python3.11版本的docker镜像 docker pull python:3.11 二、运行容器 这里我们将容器内部的8080端口,映射到宿主机的80端口上。 docker run -itd --name python311 -p

认识、理解、分类——acm之搜索

普通搜索方法有两种:1、广度优先搜索;2、深度优先搜索; 更多搜索方法: 3、双向广度优先搜索; 4、启发式搜索(包括A*算法等); 搜索通常会用到的知识点:状态压缩(位压缩,利用hash思想压缩)。

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

在JS中的设计模式的单例模式、策略模式、代理模式、原型模式浅讲

1. 单例模式(Singleton Pattern) 确保一个类只有一个实例,并提供一个全局访问点。 示例代码: class Singleton {constructor() {if (Singleton.instance) {return Singleton.instance;}Singleton.instance = this;this.data = [];}addData(value)

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

图神经网络模型介绍(1)

我们将图神经网络分为基于谱域的模型和基于空域的模型,并按照发展顺序详解每个类别中的重要模型。 1.1基于谱域的图神经网络         谱域上的图卷积在图学习迈向深度学习的发展历程中起到了关键的作用。本节主要介绍三个具有代表性的谱域图神经网络:谱图卷积网络、切比雪夫网络和图卷积网络。 (1)谱图卷积网络 卷积定理:函数卷积的傅里叶变换是函数傅里叶变换的乘积,即F{f*g}

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言