当前位置: 首页 > news >正文

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参数配置优先级

总结 &#xff1a; 优先级低-》优先级高 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中配置&#xff0c;配置样例如下&#xff1a; search.max_buckets: 30或者使用Ela…...

二十二、数组(4)

本章概要 随机生成泛型和基本数组 随机生成 我们可以按照 Count.java 的结构创建一个生成随机值的工具&#xff1a; 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,表的数据更新(修改)及删除

文章目录 &#x1f969; Update (更新/修改) &#x1f996;&#x1f95a; 修改单行数据的某个字段内的数据 &#x1f995;&#x1f95a; 配合LIMIT分页与ORDER BY 对符合条件的多条数据进行修改 &#x1f995;&#x1f95a; 对整表的某个数据字段进行修改 &#x1f995; &#…...

贪心算法及相关例题

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

给企业做公众号运营你都有哪些宝贵经验?

运营企业公众号需要长期的坚持和不断的创新&#xff0c;如何运营好一个企业公众号&#xff0c;使其成为企业与受众互动、传递价值、提升品牌形象的平台&#xff0c;是许多企业所面临的挑战。但只要不断学习&#xff0c;总结经验&#xff0c;就一定能够找到适合自己企业的公众号…...

2023亚太地区数学建模B题思路分析+模型+代码+论文

目录 2023亚太地区数学建模A题思路&#xff1a;开赛后第一时间更新&#xff0c;获取见文末名片 2023亚太地区数学建模B题思路&#xff1a;开赛后第一时间更新&#xff0c;获取见文末名片 2023亚太地区数学建模C题思路&#xff1a;开赛后第一时间更新&#xff0c;获取见文末名…...

Electron+Ts+Vue+Vite桌面应用系列:sqlite增删改查操作篇

文章目录 1️⃣ sqlite应用1.1 sqlite数据结构1.2 初始化数据库1.3 初始化实体类1.4 操作数据类1.5 页面调用 优质资源分享 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418 ElectronTsVueVite桌面应用系列 &#xff1a;这个系列包括了从桌…...

c语言编程题经典100例——(36~40例)

1&#xff0c;实现快速排序算法。 下面是用C语言实现快速排序算法的示例代码&#xff1a; #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系统管理指令&#xff0c;是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具&#xff0c;如halt&#xff0c;reboot&#xff0c;su等等。这样不仅减少了root用户的登录 和管理时间&#xff0c;同样也提高了安全性。sudo不是对shell的一个代替…...

Redis key的类型以及命令

系列文章目录 第一章 Java线程池技术应用 第二章 CountDownLatch和Semaphone的应用 第三章 Spring Cloud 简介 第四章 Spring Cloud Netflix 之 Eureka 第五章 Spring Cloud Netflix 之 Ribbon 第六章 Spring Cloud 之 OpenFeign 第七章 Spring Cloud 之 GateWay 第八章 Sprin…...

React 第五十五节 Router 中 useAsyncError的使用详解

前言 useAsyncError 是 React Router v6.4 引入的一个钩子&#xff0c;用于处理异步操作&#xff08;如数据加载&#xff09;中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误&#xff1a;捕获在 loader 或 action 中发生的异步错误替…...

k8s从入门到放弃之Ingress七层负载

k8s从入门到放弃之Ingress七层负载 在Kubernetes&#xff08;简称K8s&#xff09;中&#xff0c;Ingress是一个API对象&#xff0c;它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress&#xff0c;你可…...

STM32+rt-thread判断是否联网

一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...

工程地质软件市场:发展现状、趋势与策略建议

一、引言 在工程建设领域&#xff0c;准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具&#xff0c;正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...

【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验

系列回顾&#xff1a; 在上一篇中&#xff0c;我们成功地为应用集成了数据库&#xff0c;并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了&#xff01;但是&#xff0c;如果你仔细审视那些 API&#xff0c;会发现它们还很“粗糙”&#xff1a;有…...

拉力测试cuda pytorch 把 4070显卡拉满

import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试&#xff0c;通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小&#xff0c;增大可提高计算复杂度duration: 测试持续时间&#xff08;秒&…...

C#中的CLR属性、依赖属性与附加属性

CLR属性的主要特征 封装性&#xff1a; 隐藏字段的实现细节 提供对字段的受控访问 访问控制&#xff1a; 可单独设置get/set访问器的可见性 可创建只读或只写属性 计算属性&#xff1a; 可以在getter中执行计算逻辑 不需要直接对应一个字段 验证逻辑&#xff1a; 可以…...

人工智能--安全大模型训练计划:基于Fine-tuning + LLM Agent

安全大模型训练计划&#xff1a;基于Fine-tuning LLM Agent 1. 构建高质量安全数据集 目标&#xff1a;为安全大模型创建高质量、去偏、符合伦理的训练数据集&#xff0c;涵盖安全相关任务&#xff08;如有害内容检测、隐私保护、道德推理等&#xff09;。 1.1 数据收集 描…...

[特殊字符] 手撸 Redis 互斥锁那些坑

&#x1f4d6; 手撸 Redis 互斥锁那些坑 最近搞业务遇到高并发下同一个 key 的互斥操作&#xff0c;想实现分布式环境下的互斥锁。于是私下顺手手撸了个基于 Redis 的简单互斥锁&#xff0c;也顺便跟 Redisson 的 RLock 机制对比了下&#xff0c;记录一波&#xff0c;别踩我踩过…...

CppCon 2015 学习:Reactive Stream Processing in Industrial IoT using DDS and Rx

“Reactive Stream Processing in Industrial IoT using DDS and Rx” 是指在工业物联网&#xff08;IIoT&#xff09;场景中&#xff0c;结合 DDS&#xff08;Data Distribution Service&#xff09; 和 Rx&#xff08;Reactive Extensions&#xff09; 技术&#xff0c;实现 …...