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网桥模式的介绍与实例
1.docker0的基本理解 安装完docker服务后,我们首先查看一下宿主机的网络配置 ifconfig我们可以看到,docker服务会默认在宿主机上创建一个虚拟网桥docker0,该网桥网络的名字称为docker0。它在内核层连通了其他物理或者虚拟网卡,这…...

新材料制造ERP用哪个好?企业应当如何挑选适用的
有些新材料存在特殊性,并且在制造过程中对车间、设备、工艺、人员等方面提出更高的要求。还有些新材料加工流程复杂,涉及多种材料的请购、出入库、使用和管理等环节,解决各个业务环节无缝衔接问题是很多制造企业面临的管理难题。 新材料制造…...

vr小鼠虚拟解剖实验教学平台减少了受感染风险
家畜解剖实验教学是培养畜牧兽医专业学生实际操作能力的专业教学活动中的核心手段。采取新型教学方式与手段,合理设置实验教学内容,有助于激发学生的操作积极性,促进实践教学的改革。 家畜解剖VR仿真教学是一种借助VR虚拟现实制作和web3d开发…...

【算法萌新闯力扣】:环形链表及环形链表II
力扣题目:环形链表及环形链表II 开篇 今天是备战蓝桥杯的第26天和算法村开营第4天。挑选了链表的黄金关卡与大家分享。 题目一:环形链表 题目链接: 141.环形链表 题目描述 方法一、哈希表 判断是否有环,可以利用哈希表,遍历…...

10.docker的网络network-概述
1.docker的网络模式 docker共有四种网路模式,分别是bridge、host、none和container. 1.1 bridge bridge,也称为虚拟网桥。在bridge模式下,为每个容器分配、配置IP等,并将容器连接到一个docker0。使用–network bridge命令指定,…...

CodeTON Round #7 (Div. 1 + Div. 2)
A.jagged Swaps 题意: 给出一个包含 n n n个数字的序列,每次可以选择一个同时大于左右两边相邻的数字,将这个数字与它右边的数字交换,问能否在经过若干次操作后使序列变为升序。 分析: 由于交换只能向后进行&#…...
剑指 Offer(第2版)面试题 10:斐波那契数列
剑指 Offer(第2版)面试题 10:斐波那契数列 剑指 Offer(第2版)面试题 10:斐波那契数列解法1:递归解法2:动态规划解法3:动态规划 - 空间优化 剑指 Offer(第2版&…...
Debian 12 / Ubuntu 22.04 安装 Docker 以及 Docker Compose 教程
Debian 12 / Ubuntu 22.04 安装 Docker 以及 Docker Compose 教程 本文将指导如何在 Debian 12 和 Ubuntu 22.04 下安装 Docker 以及 Docker Compose。 PS:本文同时适用于 Debian 11 以及 Ubuntu 20.04 什么是 Docker? Docker 是一种容器化技术&#x…...
Spark_spark参数配置优先级
总结 : 优先级低-》优先级高 spark-submit 提交的优先级 < scala/java代码中的配置参数 < spark SQL hint spark submit 中提交参数 #!/usr/bin/env bashsource /home/work/batch_job/product/common/common.sh spark_version"/home/work/opt/spark&q…...
ElasticSearch之Search settings
相关参数 indices.query.bool.max_clause_count 本参数当前已失效。 search.max_buckets 本参数用于控制在单个响应中返回的聚合的桶的数量。 默认值为65536。 本参数允许在elasticsearch.yml中配置,配置样例如下: search.max_buckets: 30或者使用Ela…...

二十二、数组(4)
本章概要 随机生成泛型和基本数组 随机生成 我们可以按照 Count.java 的结构创建一个生成随机值的工具: Rand.java import java.util.*; import java.util.function.*;import static com.example.test.ConvertTo.primitive;public interface Rand {int MOD 10_0…...
『 MySQL数据库 』CRUD之UD,表的数据更新(修改)及删除
文章目录 🥩 Update (更新/修改) 🦖🥚 修改单行数据的某个字段内的数据 🦕🥚 配合LIMIT分页与ORDER BY 对符合条件的多条数据进行修改 🦕🥚 对整表的某个数据字段进行修改 🦕 &#…...

贪心算法及相关例题
目录 什么是贪心算法? leetcode455题.分发饼干 leetcode376题.摆动序列 leetcode55题.跳跃游戏I leetcode45题.跳跃游戏II leetcode621题.任务调度器 leetcode435题.无重叠空间 leetcode135题.分发糖果 什么是贪心算法? 贪心算法更多的是一种思…...

给企业做公众号运营你都有哪些宝贵经验?
运营企业公众号需要长期的坚持和不断的创新,如何运营好一个企业公众号,使其成为企业与受众互动、传递价值、提升品牌形象的平台,是许多企业所面临的挑战。但只要不断学习,总结经验,就一定能够找到适合自己企业的公众号…...
2023亚太地区数学建模B题思路分析+模型+代码+论文
目录 2023亚太地区数学建模A题思路:开赛后第一时间更新,获取见文末名片 2023亚太地区数学建模B题思路:开赛后第一时间更新,获取见文末名片 2023亚太地区数学建模C题思路:开赛后第一时间更新,获取见文末名…...

Electron+Ts+Vue+Vite桌面应用系列:sqlite增删改查操作篇
文章目录 1️⃣ sqlite应用1.1 sqlite数据结构1.2 初始化数据库1.3 初始化实体类1.4 操作数据类1.5 页面调用 优质资源分享 作者:xcLeigh 文章地址:https://blog.csdn.net/weixin_43151418 ElectronTsVueVite桌面应用系列 :这个系列包括了从桌…...
c语言编程题经典100例——(36~40例)
1,实现快速排序算法。 下面是用C语言实现快速排序算法的示例代码: #include <stdio.h> void swap(int* a, int* b) { int t *a; *a *b; *b t; } int partition(int arr[], int low, int high) { int pivot arr[high]; int i (low …...
SQL Server实现参数化增删改查Class类
目录 SqlServerDatabase.Class Main调用 SqlServerDatabase.Class using System; using System.Data; using System.Data.SqlClient; class SqlServerDatabase { private readonly string connectionString; public SqlServerDatabase(string connectionString) { …...

【Linux】 sudo命令使用
sudo sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,su等等。这样不仅减少了root用户的登录 和管理时间,同样也提高了安全性。sudo不是对shell的一个代替…...

Redis key的类型以及命令
系列文章目录 第一章 Java线程池技术应用 第二章 CountDownLatch和Semaphone的应用 第三章 Spring Cloud 简介 第四章 Spring Cloud Netflix 之 Eureka 第五章 Spring Cloud Netflix 之 Ribbon 第六章 Spring Cloud 之 OpenFeign 第七章 Spring Cloud 之 GateWay 第八章 Sprin…...
谷歌浏览器插件
项目中有时候会用到插件 sync-cookie-extension1.0.0:开发环境同步测试 cookie 至 localhost,便于本地请求服务携带 cookie 参考地址:https://juejin.cn/post/7139354571712757767 里面有源码下载下来,加在到扩展即可使用FeHelp…...

云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地
借阿里云中企出海大会的东风,以**「云启出海,智联未来|打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办,现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...
【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)
要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况,可以通过以下几种方式模拟或触发: 1. 增加CPU负载 运行大量计算密集型任务,例如: 使用多线程循环执行复杂计算(如数学运算、加密解密等)。运行图…...
CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云
目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...

让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比
在机器学习的回归分析中,损失函数的选择对模型性能具有决定性影响。均方误差(MSE)作为经典的损失函数,在处理干净数据时表现优异,但在面对包含异常值的噪声数据时,其对大误差的二次惩罚机制往往导致模型参数…...
08. C#入门系列【类的基本概念】:开启编程世界的奇妙冒险
C#入门系列【类的基本概念】:开启编程世界的奇妙冒险 嘿,各位编程小白探险家!欢迎来到 C# 的奇幻大陆!今天咱们要深入探索这片大陆上至关重要的 “建筑”—— 类!别害怕,跟着我,保准让你轻松搞…...

Linux nano命令的基本使用
参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时,显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...

淘宝扭蛋机小程序系统开发:打造互动性强的购物平台
淘宝扭蛋机小程序系统的开发,旨在打造一个互动性强的购物平台,让用户在购物的同时,能够享受到更多的乐趣和惊喜。 淘宝扭蛋机小程序系统拥有丰富的互动功能。用户可以通过虚拟摇杆操作扭蛋机,实现旋转、抽拉等动作,增…...

Linux部署私有文件管理系统MinIO
最近需要用到一个文件管理服务,但是又不想花钱,所以就想着自己搭建一个,刚好我们用的一个开源框架已经集成了MinIO,所以就选了这个 我这边对文件服务性能要求不是太高,单机版就可以 安装非常简单,几个命令就…...
git: early EOF
macOS报错: Initialized empty Git repository in /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/.git/ remote: Enumerating objects: 2691797, done. remote: Counting objects: 100% (1760/1760), done. remote: Compressing objects: 100% (636/636…...