十二、docker学习-docker核心docker网络之bridge网络(2)

news2025/1/10 20:52:19

bridge网络

bridge网络表现形式就是docker0这个网络接口。容器默认都是通过docker0这个接口进行通信。也可以通过docker0去和本机的以太网接口连接,这样容器内部才能访问互联网。

# 查看docker0网络,在默认环境中,一个名为docker0的linux bridge自动被创建好了,其上有一个 docker0 内部接口,IP地址为172.17.0.1/16 
ip a 
# 查看docker 网络 
docker network ls 
# 查看bridge网络详情。主要关注Containers节点信息。 
docker network inspect bridge

ip a
在这里插入图片描述
docker network ls
在这里插入图片描述
docker network inspect bridge
在这里插入图片描述

docker0详解

运行镜像
docker run -itd --name nginx1 -p 80:80 nginx:1.21.0-alpine

# 查看bridge网络详情。主要关注Containers节点信息。发现nginx1容器默认使用bridge网络
docker network inspect bridge

在这里插入图片描述

容器创建时IP地址的分配

# 查看docker100主机网络。发现多出一块网卡veth094ff04@if6
ip a

在这里插入图片描述
Docker创建容器网络流程

Docker 创建一个容器的时候,会执行如下操作:

  • 创建一对虚拟接口/网卡,也就是veth pair,分别放到本地主机和新容器中;
  • 本地主机一端桥接到默认的 docker0 或指定网桥上,并具有一个唯一的名字,如 veth094ff04;
  • 容器一端放到新容器中,并修改名字作为 eth0,这个网卡/接口只在容器的名字空间可见;
  • 从网桥可用地址段中(也就是与该bridge对应的network)获取一个空闲地址分配给容器的 eth0,并配置默认路由到桥接网卡 veth094ff04。

完成这些之后,容器就可以使用 eth0 虚拟网卡来连接其他容器和其他网络。

如果不指定–network,创建的容器默认都会挂到 docker0 上,使用本地主机上 docker0 接口的 IP 作为所有容器的默认网关。

查看容器ip
# 方式一
docker exec -it nginx1 sh
ip a

# 方式二
docker exec -it nginx1 ip a

在这里插入图片描述

查看网卡绑定关系
# 需要安装一个扩展
yum install -y bridge-utils
brctl show

在这里插入图片描述
在这里插入图片描述

流程图

在这里插入图片描述

多容器之间通讯

IP通信测试
# 创建两个nginx容器进行通信
docker run -itd --name nginx1 nginx:1.21.0-alpine
docker run -itd --name nginx2 nginx:1.21.0-alpine
docker network inspect bridge 

# 进入nginx1进行ping测试
docker exec -it nginx1 sh 
ping 172.17.0.3 
# 进入nginx2进行ping测试
docker exec -it nginx2 sh 
ping 172.17.0.2 
# ping外网测试
ping www.baidu.com

在这里插入图片描述

容器名通信测试
docker exec -it nginx2 ping nginx1
docker exec -it nginx1 ping nginx2
启动顺序不同ip不同
# 启动顺序不同ip互换了
docker run -itd --name nginx2 nginx:1.21.0-alpine
docker run -itd --name nginx1 nginx:1.21.0-alpine

在这里插入图片描述

问题【容器名无法通信】

通过容器名ping不通,证明无法通过容器名进行通信,但是由于ip是随机生成的每次启动都会变,如何解决?

容器名通信方式
方式一:link容器

–link=[]: 添加链接到另一个容器;【不推荐使用】

不推荐原因

  • 需要手动指定那个容器需要可以进行连接;
  • 集群增加新的节点如果需要进行连接需要重新操作;
  • link关系是单向的,不可逆;
  • docker官网已经不推荐我们使用link参数;
  • docker用其他方式替换掉link参数;

使用方式

docker run -itd --name nginx2 --link nginx1 nginx:1.21.0-alpine

# 可ping通
docker exec -it nginx2 ping 172.17.0.2 
docker exec -it nginx2 ping nginx1

# 无法ping通【link关系是单向的,不可逆】
docker exec -it nginx1 ping nginx2

在这里插入图片描述

方式二:新建bridge网络
# 创建一个网络
# 参数-d指DRIVER的类型,后面的test-bridge是network的自定义名称,这个和docker0是类似的。
docker network create -d bridge test-bridge

在这里插入图片描述

将容器通过参数network connect来连接test-bridge网络。

# 查看网络详情
brctl show 
docker network ls 
docker network inspect lagou-bridge

# 创建容器两个容器 nginx1,nginx2
docker run -itd --name nginx1 --network test-bridge nginx:1.21.0-alpine
docker run -itd --name nginx2 --network test-bridge nginx:1.21.0-alpine

# ping一下
docker exec -it nginx2 ping nginx1
docker exec -it nginx1 ping nginx2

在这里插入图片描述
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-U0aG8cQG-1687093570008)(file:///Users/yangcun/Documents/学习/Markdown/images/docker.assets/image-20210706102818505.png?msec=1687092439628)]

容器通信总结
  • 想要容器之间通过容器名进行互相访问docker提供了两种方式,分别是link和新建自己的bridge网络。
  • 通过link容器进行连接,但是是单向的,docker官方不推荐使用的。不利于扩展。
  • 通过自己创建的bridge网络默认就是可以在同一个网络进行互联的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/660204.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Go语言的TCP和HTTP网络服务基础

目录 【TCP Socket 编程模型】 Socket读操作 【HTTP网络服务】 HTTP客户端 HTTP服务端 TCP/IP 网络模型实现了两种传输层协议:TCP 和 UDP,其中TCP 是面向连接的流协议,为通信的两端提供稳定可靠的数据传输服务;UDP 提供了一种…

NodeJSMongodbMVC管理开发⑨

文章目录 ✨文章有误请指正,如果觉得对你有用,请点三连一波,蟹蟹支持😘前言MVC思想开发 服务器代码演示 M层 Services 或 Model V层 Views C层 Controllers总结 ✨文章有误请指正,如果觉得对你有用&#xff0c…

C语言笔记之结构体总结

C语言笔记之结构体总结 code review! 文章目录 C语言笔记之结构体总结一.介绍二.3种结构体类型变量说明1. 先定义结构,再定义结构变量2. 定义结构体类型的同时说明变量3. 直接说明结构变量(匿名结构体) 四.结构体成员表示方法五.结构体指针做参数六.结构体初始化1…

阵列信号处理笔记(2):均匀线阵、均匀加权线阵、波束方向图

阵列信号处理笔记(2) 文章目录 阵列信号处理笔记(2)均匀线阵(Uniform Linear Array)均匀加权线阵波束方向图的关键参数附polardb.m用来计算HPBW的Mathematica代码,以及用于拟合的数据拟合的MATL…

二、DSMP/OLS等夜间灯光数据贫困地区识别——MPI和灯光指数计算

一、前言 其实在计算MPI和灯光指数之前,最重要是DMSP/OLS等夜间灯光指数的校正还有就是MPI计算,那么校正分为DMSP/OLS和NPP/VIIRS夜间灯光数据,DMSP/OLS夜间灯光数据校正主要采取不变目标区域法原理进行校正,当前对其有很多优化后的做法,但是万变不离其宗,核心思想还是没…

LeetCode257. 二叉树的所有路径

写在前面: 题目链接:LeetCode257. 二叉树的所有路径 题目难度:简单 编程语言:C 一、题目描述 给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。 叶子节点 是指没有子节点的…

阿里P8架构师手码的Java工程师面试小抄在Github火了,完整版限时开源

网上的 JAVA 面试文档更是层出不穷。但是单单刷 JAVA 面试题就足够了吗? 答案显然是不够的!那么为什么呢? 因为现在的程序员就业环境早就和两年前不可同日而语了。 如果你在两年前面试: 就拿 JVM 来说,刷面试题可能…

Springboot+vue.js+协同过滤推荐+余弦相似度算法实现新闻推荐系统

Springbootvue.js协同过滤推荐余弦相似度算法实现新闻推荐系统 - 简书 针对海量的新闻资讯数据,如何快速的根据用户的检索需要,完成符合用户阅读需求的新闻资讯推荐?本篇文章主要采用余弦相似度及基于用户协同过滤算法实现新闻推荐&#xff0…

SpringMvc详解

SpringMvc用来代替展示层Servlet,均属于Web层开发技术 Servlet是如何工作的 1、导入Servlet依赖坐标 2、创建一个Servlet接口实现类,重写其中的所有方法 3、在Servlet实现类上加上WebServlet注解,用来配置Servlet访问路径 4、启动Tomca…

Misc(6)

隐藏的钥匙 还是一样挨个试,详细信息里没有发现flag信息,就用010打开试试 文件头正常,暂时没有发现隐藏文件 喝,多搜搜还是有收获的,一开始以为是有隐藏文件就利用ctrlf在010中进行搜索 分别搜索了txt和rar文件都没有反…

VLAN基础知识2_VLAN二层通信原理

目录 1.VLAN二层通信简介 2.同一交换机VLAN二层通信 3.跨交换机VLAN二层通信 4.VLAN二层通信实验 4.1 VLAN基本配置命令 4.2 VLAN配置步骤 4.3 VLAN二层通信实验效果 1.VLAN二层通信简介 VLAN是一个逻辑上的分组,可以将一个物理网络端口分割成多个虚拟网络&…

C++初始化列表详解

写在前面: 初始化列表是一种用于初始化成员变量的语法结构,它可以在类的构造函数中使用,用于初始化类的成员变量。 而 列表初始化指的是 是一种初始化变量的简洁方式,可以用花括号{}来表示。列表初始化可以用于各种类型的变量&…

某农业大学c/c++第五次实验(类和对象)

1.Time时间类 【问题描述】 设计一个Time类,并设计多个重载的构造函数,可以设置时间、进行时间的加减运算、按12小时格式和24小时格式输出时间。 例如: 其中构造函数Time::Time(int s)根据总秒数计算hour、minute、second并构造对象&#x…

C语言,BMP格式解析,生成不同位深的图片。

0.前言 目录 0.前言 1.BMP格式详解 1.1图片的构成 1.2BMP格式 1.2.1文件头 1.2.2位图信息头 1.2.3调色板 1.2.4位图数据 2.生成 3.总结 最近工作任务繁重且对我来说小有难度,但是没有困难的事情做起来怎么有收获呢? 今天推荐一本书《寻找光…

Windows10环境下载安装Oracle19c教程

Windows10环境下载安装Oracle19c教程 前言1. 官网下载2. 运行setup.exe2.1 解压缩2.2 报错解决 3.正式安装3.1 配置选项3.2 系统类3.3 oracle主目录用户3.4 安装位置3.5 先决条件检查3.6 安装产品3.7 安装完成3.8 完全卸载oracle(非必备) 4. 安装验证4.1 CMD验证4.2 SQL Plus4.…

本周大新闻|Quest游戏订阅服务曝光;平价版苹果XR头显25年推出

本周XR大新闻,AR方面,彭博苹果预计25年推出更亲民头显;Vision Pro外屏含微透镜;WWDC23苹果高管脱口秀爆料更多细节;外媒爆料称Vision Pro预期销量改为15万台;VitreaLab展示RGB激光背光技术。还是提前说一下…

leetcode刷题之字符串相关问题

344.反转字符串 方法一:找中间结点,头尾翻转 var reverseString function(s) {let len s.lengthlet mid Math.floor((s.length - 1) / 2) //向下取整 如果长度是奇数,那么mid是最中间的结点 如果长度是偶数,那么mid是中间两个…

【Java技术专题】「攻破技术盲区」带你攻破你很可能存在的Java技术盲点之动态性技术原理指南(反射技术专题)

带你攻破你很可能存在的Java技术盲点之动态性技术原理指南 带你攻破你很可能存在的Java技术盲点之动态性技术原理指南编程语言的类型静态类型语言动态类型语言 技术核心方向反射API反射案例介绍反射功能操作获取构造器长度可变的参数 - 构造方法使用反射 API 获取参数长度可变的…

【软件测试】

系列文章目录 文章目录 系列文章目录前言第四章 单元测试4.1 软件测试过程概述4.2 什么是单元测试4.2.1 单元测试的定义4.2.2 单元测试的重要性4.2.3 单元测试原则 4.3 单元测试的目标和任务4.3.1 单元测试的目标:单元模块被正确编码4.3.2 单元测试的主要任务 4.4 单…

FreeRTOS:事件标志组

目录 一、事件标志组简介1.1事件位(事件标志)1.2事件组1.3事件标志组和事件位的数据类型 二、创建事件标志组2.1函数 xEventGroupCreate()2.2函数xEventGroupCreateStatic() 三、设置事件位3.1函数 xEventGroupClearBits()3.2函数xEventGroupClearBitsFromISR()3.3函数 xEventG…