Docker容器如何连接网络+容器间网络互通+Docker网络模式+自定义网络+网络打通

2023-10-27

Docker网络

  • 问题:
  • Docker容器如何连接网络
  • Docker容器之间能否接通网络
  • Docker容器之间可以通过名称ping通吗
  • 能否自定义一个网络

那么,我们带着几个问题来学习docker的网络


Docker容器是如何连接网络的

我们在安装了Docker以后,在 宿主机上 ip addr就会发现,多一个docker0的网卡配置

在这里插入图片描述

我们启动一个tomcat容器,然后再去容器看一下 ip addr

docker run -d -P --name tomcat01 tomcat
docker exec -it tomcat01 ip addr  # 支持此写法

在这里插入图片描述

发现有个 6:eth0@if7的网络,我们再去宿主机上看一下网络


在这里插入图片描述

会发现,宿主机上多了一个 7:veth0925cfc@if6的网络

实际上这是采用了 evth-pair技术,6:eth0@if7和7:veth0925cfc@if6就是一对儿对应的虚拟网络设备接口,两个接口可以连接起来,把网络打通

evth-pair就是一对的虚拟设备接口,他们都是成对出现的,一段连着协议,一段彼此相连。正因为有这个特性,evth-pair充当一个桥梁,连接各种虛拟网络设备的
OpenStac,Docker容器之间的连接,OVS的连接,都是使用evth-pair 技术

那么我们能不能ping通容器呢,试一下 (tomcat01的地址 172.17.0.2)

在这里插入图片描述

完全可以,实际上,我们在宿主机ping容器,经过docker0上的虚拟网络设备接口,也就是7:veth0925cfc@if6和

6:eth0@if7就可以走通

Docker容器之间可以通吗

先再建一个tomcat02容器

docker run -d -P --name tomcat02 tomcat
docker exec -it tomcat02 ip addr

在这里插入图片描述

ip addr

在这里插入图片描述

发现又多了一对虚拟设备接口 8:eth@if9 和 9:vethe9ed702@if8

用 tomcat01 ping tomcat02(172.17.0.3)

docker exec -it tomcat01 ping 172.17.0.3

在这里插入图片描述

发现,容器之间也可以ping通

画一个网络模型

在这里插入图片描述

流程:从tomcat01–>evth-pair技术的虚拟设备接口–>docker0路由器–>evth-pair技术的虚拟设备接口–>连接到tomcat02

Docker容器之间可以通过名称ping通吗

docker exec -it tomcat01 ping tomcat02

在这里插入图片描述

直接使用容器名称是ping不通的,要是用 --link技术来实现(创建容器的时候指定)

在启动一个tomcat03 docker run -d -P --name tomcat03 --link tomcat02 tomcat

使用tomcat03ping tomcat02

docker exec -it tomcat03 ping tomcat02

在这里插入图片描述

结果ping通了

我们看一下docker的docker0网络配置(docker0的名称默认为bridge)

docker network ls
docker network inspect 网络id/名称

在这里插入图片描述

也就是说,创建的容器如不指定网络的话,那么默认的使用docker0(bridge)的网络模式


我们去看一下tomcat03的 /etc/hosts文件

在这里插入图片描述

**实质:**那么实质上就是,在tomcat03的hosts配置文件里,给tomcat02的ip设置了一个名字,访问tomcat02的时候实际上就是转发到172.17.0.3 也就是 tomcat02的ip地址

**局限性:**但是如果使用tomcat02去ping tomcat03呢,结果是不可行,现在已经不再使用 --link来连接容器了,局限性比较

能否自定义一个网络

当然可以,创建一个容器在不指定网络的情况下,默认是docker0(bridge)网络

docker network ls 查看所有网络

在这里插入图片描述

温馨提示:忘记命令时,docker network --help 查文档

网络模式:

bridge :桥接docker (默认,自己创建也使用bridge模式)
none:不配置网络
host :和宿主机共享网络
container :容器网络连通! ( 用的少!局限很大)

创建容器时指定网络

docker run -d -P tomcat01 --net bridge tomcat # --net 指定网络

自定义网络

忘记怎么敲,就docker network create --help

在这里插入图片描述

–driver bridge
–subnet 192.168. 0.0/16
–gateway 192.168.0.1

docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 net

在这里插入图片描述

docker network inspect net # 查看网络信息

在这里插入图片描述

尝试一下,使用我们自己的网络来启动容器

docker run -d -P --name tomcat-net-01 --net net tomcat
docker run -d -P --name tomcat-net-02 --net net tomcat

查看 net 网络的配置信息

docker network inspect net

在这里插入图片描述

使用我们自定义的网络创建的容器之间可以通过容器名字相互ping通

docker exec -it tomcat-net-01 ping tomcat-net-02

在这里插入图片描述

打通网络

我们先使用默认bridge创建一个tomcat01,那么tomcat01可以访问到 net 网络下的 tomcat-net-01吗

不可以,两个网络间的容器需要打通后才可以访问

是指,网络和容器之间打通(例如,net网络和 tomcat01容器)

在这里插入图片描述

docker network connect net tomcat01

打通后,试一下可不可以访问 tomcat-net-01

docker exec -it tomcat01 ping tomcat-net-01

在这里插入图片描述

访问成功了

我们看一下tomcat01的网络配置

在这里插入图片描述

惊讶,这个容器的网络配置居然有两个,而且分配了两个ip地址!!!

网络模型图(偷个图,哈哈O(∩_∩)O)

在这里插入图片描述

也就是说,docker0的网络中有tomcat01这个容器,而且自定义的net网络中也有tomcat01这个容器

一般使用docker network connect 打通网络

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Docker容器如何连接网络+容器间网络互通+Docker网络模式+自定义网络+网络打通 的相关文章

随机推荐

  • 多线程详解(一)——创建多线程

    一 进程与线程 1 进程 进程是资源 CPU 内存等 分配的基本单位 它是程序执行时的一个实例 程序运行时系统就会创建一个进程 并为它分配资源 然后把该进程放入进程就绪队列 进程调度器选中它的时候就会为它分配CPU时间 程序开始真正运行 2
  • MyBatis-Plus(二)设置实体类对应的表名、字段名

    设置实体类对应的表名 字段名 一 设置关联的表名 1 默认情况下 如果数据库表是使用标准的下划线命名 并且能对应上实体类的类名 我们就不需要特别去手动匹配 比如有张 user info 表 那么会自动匹配下面这个实体类 Data publi
  • 【硬件】以太网PHY芯片有三个时钟说明

    硬件以太网PHY芯片有三个时钟 对此进行了梳理 PHY芯片时钟的选择 PHY芯片中有3个时钟 Gtx clk Rx clk Tx clk 1 GTX CLK仅使用在GMII模式下 时钟频率为125M 发送数据时的时钟 2 RX CLK在GM
  • Altium Desinger - PCB 3D模型创建导出

    打开绘制好的PCB版图 点击File gt Export gt STEP 3D 输出保存 就可以被solidworks 打开导入 整机文件
  • 上海某高校线上期末题-核酸检测系统C++实现

    上海某高校线上期末题 核酸检测系统C 实现 注意 本博客只是以学习交流和记录学习内容为主 分享自己的一些见解和思路 如有不当之处 请告知 试题内容 考核要求 项目文件地址 在github上开源 https github com hudisc
  • 如何在PADS中添加表面型测试点

    在PCB 设计中 我们经常需要对某些信号线增加一些测试点 以便在产品调试中对其信号进行测试 在PADS Layout POWERPCB 中添加测试点时 默认的是以标准过孔STANDARDVIA 作为测试点 但这是通孔方式的测试点 为了节省测
  • Spring更简单的使用方法

    前面介绍了一些最基本的存储和读取Bean对象的方法 但是在Spring中已经基本不这样使用了 因此这一篇博客就来介绍一下更简单的存储和读取Bean对象的方法而想要更简单的存储和读取最核心的就是使用注解 下面一起来看看吧 目录 一 存储Bea
  • Cherry-Pick

    版权声明 本公众号发布的所有文章 均属于原创 版权归本公众号所有 未经允许 不得转载 一 前言 在实际工作开发中 会遵循标准的 Git Work flow 对待不同的功能 会切出不同的分支进行 coding 所以 基于什么基准分支切出来的功
  • 过采样4:提高ADC分辨率实例(终篇)

    原文来自公众号 工程师看海 公众号后台回复 过采样 有更多资料 这应该是过采样系列的最后一篇文章 经常有同学在使用FPGA 单片机或者DSP进行过采样时没有正确设计代码 导致结果异常 有些结果看似正常 而实际却没有意义 这篇文章涉及到简单的
  • Unity 判断 鼠标/触摸 位置是否在指定Ui上,非射线检测方式。触屏移动物体。

    事出有因 1 项目的触摸点击事件 并且有手指缩放 移动功能 2 unity本身支持touch功能 这个不多说 3 当做手指缩放 移动的时候就要判断touch点位置了 但是如果不加任何判断则会乱套 如 本来想移动A 让A跟随 手指touch
  • 分布式事务中2PC与3PC的区别

    分布式事务中2PC与3PC的区别 2017 04 02 19 46 442人阅读 评论 0 收藏 举报 分类 Java知识 1 版权声明 本文为博主原创文章 未经博主允许不得转载 目录 协调者 在分布式系统中 每一个机器节点虽然都能明确的知
  • Pandas读取Excel文件XLRDError: Excel xlsx file; not supported

    问题背景 工作中大部使用Pandas分处理的数据都是以csv后缀结尾的文件 但是突然换成xlsx后缀的表格之后 出现的一些错误 问题现象 XLRDError Excel xlsx file not supported usr local l
  • pointer-event属性详解

    一 pointer event属性可以指定在什么情况下元素可以成为鼠标事件 二 取值 1 pointer event auto 默认值 对于svg元素 该值与visiblePainted效果相同 2 pointer event none 元
  • X的N次方求解——pow(x,n)实现

    最近看到这样的一个题目求X的N次方 自己想了一些解决办法 记录一下留作日后参考 求X的N次方 首先暴力求解 int exp int x int n int ret 1 for int i 0 i lt n i ret x return re
  • 阅读桑迪潘·戴伊的《Python图像处理实战》笔记十一

    十一 图像处理中的深度学习 图像检测等 1 检测目标的全卷积模型 YOLOv2 1 使用卷积神经网络检测目标 两个步骤 首先 使用小而紧密裁剪的图像训练卷积神经网络进行图像分类 其次 使用不同窗口大小的滑动窗口和事先学习该窗口内的测试图像进
  • 高性能的iocp网络设计思路

    IOCP是什么就不用介绍了 为什么要用IOCP就更不用提及 这里我们只简单讨论IOCP开发的一个思路 即能提高性能又能隆低开发复杂性 即能提高性能又能隆低开发复杂性 觉得我说的有矛盾吗 不是复杂的代码才能换来高效吗 其实不一定 我认为简单是
  • 用C语言编写程序,将多个字符串排序输出

    1 有三个字符串分别是 hello bit world 然后排序之后输出的顺序为 bit hello world int main char str1 100 char str2 100 char str3 100 char tmp 100
  • 【Oracle】事务的提交与回滚

    一 数据库事务 数据库事务 Database Transaction 是指作为单个逻辑工作单元执行的一系列操作 事务处理可以确保除非事务性单元内的所有操作都成功完成 否则不会永久更新面向数据的资源 通过将一组相关操作组合为一个要么全部成功要
  • 农村水利水电与水土保持

    授课 福师大张思鹏sunnyact 泉舟时代 主要内容 简介 做出一款能实时通报水利水电与水土相关的并能及时发送到指定相关人员手机短信 思路 通过水利局农村水利水电与水土保持处官网参考 百度脑图分享 https naotu baidu co
  • Docker容器如何连接网络+容器间网络互通+Docker网络模式+自定义网络+网络打通

    Docker网络 问题 Docker容器如何连接网络 Docker容器之间能否接通网络 Docker容器之间可以通过名称ping通吗 能否自定义一个网络 那么 我们带着几个问题来学习docker的网络 Docker容器是如何连接网络的 我们