docker运维之自定义网络配置

news2024/11/19 4:20:14

自定义网络配置讲解与实操

docker中的容器有独立的隔离空间,那么,它们能不能通过网络相互访问呢?

答案是可以的!作者在之前Redis篇中使用docker配置了主从、cluster集群,当时的做法是利用每个容器的ip地址和端口创建相应的配置文件,再使用配置文件和其他连接操作去构建集群。无论是主从集群中的主节点和从节点,还是cluster集群的各个节点,它们都可以做到网络连接与访问,如果不能连接那集群节点之间肯定就无法通信了。

这种默认的,通过docker自动分配ip地址作为网络节点的方式,就是创建docker时自带的网络通讯功能:

docker0是Docker的默认虚拟网桥。当你安装Docker并启动它时,它会自动创建docker0网桥。该网桥允许运行在Docker容器中的进程与主机或其他容器通信。

  1. 网桥(Bridge)docker0首先是一个网桥。它连接了容器网络与主机网络,使容器可以与主机和其他容器通信。

  2. 网段(Subnet):默认情况下,docker0有一个与之关联的子网。通常,这个子网是172.17.0.0/16。这意味着docker0可以分配在此范围内的IP地址给容器。

  3. 网关(Gateway):在这个子网内,docker0的IP地址通常是172.17.0.1,并且它通常被用作该子网内的默认网关。这意味着,当容器要与外部网络通信时,它们的流量会首先经过这个地址。

如果有读者不了解这三个概念,本文在后面会有补充知识的讲解哦!

当我们日常让容器连接docker0时,需要通过各个容器的ip地址进行访问连接。这是docker0默认的约束,必须通过docker0为你分配ip,再通过ip进行网络连接,我们以某两个位于docker0的容器为例:

ping 后加这个容器的ip地址,结果表明成功访问!

        但是有一点,这一点也在作者之前配置redis的时候遇到过,就是:容器的开启顺序决定了docker为容器分配的ip地址,先启动的容器ip地址越“小”。

        如果使用docker0所在子网作为默认的网段,首先一点:通过ip地址进行网络连接非常麻烦,需要通过docker inspect所有容器的ip,再通过ip连接

        第二点是:如果开启容器的顺序改变(比如增删容器、测试部分容器),其ip地址也会根据顺序改变,而原本配置写死的ip地址很有可能需要重新再配置,并且一直存在这样的隐患。

所以,通过ip地址连接网络的方法看起来不太行。为此,可以利用docker自定义网络解决这个问题!一旦创建自定义网络,就会生成新的网桥,加入自定义后的网桥可以通过容器名称互相访问!

无论容器重启多少次,它的容器名称是不会改变的,所以,这种自定义网络解决了原本docker0根据ip地址分配网络存在的根本问题!下面是创建自定义网络的例子:

创建网络后,可以通过ip addr指令查看网卡(不了解概念的不要着急,后面也有介绍):

最后一段表示新的自定义网桥出现了!再通过“docker network connect 网络名 容器名”将现有容器添加到该网络。添加之后,可以通过 “docker inspect 容器名” 查看容器所在的网络:

以mysql为例,发现除了默认docker0的bridge网络,它还处于刚刚自定义的网络中。对于还未创建的容器,我们可以在其创建语句中表明其网络  “--network 网络名”  ,例子如下:

docker run -d --name demo -p 8080:8080 --network heima docker-demo

这样创建容器之后,该容器就不会存在于docker0网桥中,和java的构造方法类似。只要你先前定义好了容器的网络,默认的docker0网桥就不会再考虑为这个容器提供网络:

当我们进入demo容器后,利用容器名mysql验证二者网络是否连接:

结果表明,同处一个自定义网络heima中的demo和mysql容器可以只通过容器名进行网络访问!对于demo容器,由于其创建时指定了自定义网络,所以会与默认的docker0网桥失去联系,就不能再使用其他容器的ip地址进行网络连接了。但是,学会自定义网络后,基本也不会去通过ip连接网络。


网桥、网关、网段、网卡

网桥 (Bridge)

网桥主要用于连接同一种类型的网络,并使它们在数据链路层(第2层)上表现为一个网络。

例子:假设你有一个大楼,这个大楼有很多办公室。每个办公室都有自己的局域网(LAN)。为了让所有办公室内的设备都能彼此通信,大楼管理员为大楼安装了一个中央交换机或网桥。所有办公室都连接到这个中央交换机,从而能够互相通信。

Dockerdocker0可以被视为这个“大楼”。当你启动一个Docker容器,可以想象它就像是大楼里的一个“办公室”。所有这些“办公室”(容器)都通过docker0网桥(“大楼”)连接在一起,所以它们可以彼此通信。


网关 (Gateway)

  1. 功能:网关是一个网络与另一个网络之间的接口。它在网络层(第3层)上工作,并将不同网络或不同协议的数据包进行转换和路由。

  2. 工作原理:它可以转换数据格式、通信协议等,使两个不同的网络能够进行通信。

  3. 使用场景:常见的例子是家庭路由器,它充当了家庭内部局域网和互联网之间的网关,另外在企业中连接内部网络和外部网络的设备也经常被称为网关。

例子:现在想象一下,大楼的人们希望与外部的互联网通信。为此,他们需要一个设备来转发他们的流量,并在必要时进行必要的协议和地址转换。这个设备就是网关。所有从局域网到互联网的流量都会经过这个网关。当我们提及"网关"在计算机网络的上下文中,网关通常指的是一个IP地址,该地址允许你的网络设备访问其他网络。

Dockerdocker0网桥除了允许容器之间的通信外,还有一个其他重要的功能:docker0的IP地址(通常是172.17.0.1)充当容器与主机或外部网络之间的默认网关。这意味着,当容器想要与外部世界通信时,它们会将流量发送到docker0的这个地址,并由主机进一步处理和转发。


让我们看一个更为具体的例子,并解释其意义。

小型网关举例

        假设你的电脑在家中的局域网内,它的IP地址可能是192.168.1.100。当你查看电脑的网络配置时,可能会看到这样一个默认网关的地址:192.168.1.1

        这个192.168.1.1就是你家中路由器的内部IP地址。所有从你的电脑发出并准备传输到互联网的数据都会首先发送到这个地址。简而言之,这个网关地址是你的电脑与外部世界通信的桥梁。

解释

  1. 内部通信:如果你的电脑想要与同一个局域网内的另一台电脑通信(例如,另一台电脑的IP地址是192.168.1.101),数据直接在这两台电脑之间传输,不需要经过网关

  2. 外部通信:但是,如果你的电脑想要访问一个外部的网站,例如google.com,这个请求会被发送到你的默认网关,也就是192.168.1.1。接着,你家的路由器会处理这个请求,并将其转发到互联网。

  3. 返回的数据:当google.com回应你的请求,数据首先被发送到你家的路由器(因为对于外部网络来说,它只认识你家的公共IP地址,不知道你家里的私有IP地址)。然后,路由器查看这个返回的数据,并通过内部的地址(如192.168.1.100)将数据转发给正确的设备,也就是你的电脑。

  4. 为什么需要网关:没有网关,你的电脑或其他设备就无法知道如何将数据发送到外部网络。网关为你的设备提供了一个出口,使其可以与外部世界通信。

大型网关举例

在大型网络环境中,尤其是企业级或数据中心网络,网关不再是简单的家庭路由器那样的设备。大型网络的网关通常由一系列高级、高性能的设备组成,具有更高级的功能、更高的吞吐量、更强大的处理能力和更高的可靠性。

以下是构成这些大型网络网关的一些常见组件和特性: 

  1. 高性能路由器:大型网络中的网关通常是高性能的路由器,它们可以处理大量的并发连接和高速数据流量。

  2. 防火墙设备:这些设备专门用于检查、过滤和控制进出的数据流,确保网络的安全。

  3. 负载均衡器:在大型网络环境中,为了提供高可用性和性能,可能会使用负载均衡器来分配到达的流量,确保每个服务器或服务都得到均衡的工作量。

  4. VPN设备:对于需要安全远程访问的企业,VPN(虚拟专用网络)网关是必不可少的,它们提供了一个加密的隧道,使远程工作者可以安全地连接到企业网络。

  5. 冗余和故障转移:为了提供高可用性,大型网络的网关通常具有冗余配置。这意味着如果一个设备出现故障,另一个设备可以立即接管,确保网络的持续运行。

  6. 高级路由和QoS功能:大型网络中的路由器和网关通常具有高级的路由功能,如BGP、OSPF等,以及质量服务(QoS)功能,确保优先处理关键数据

  7. 网络安全功能:除了基本的防火墙功能外,大型网络的网关可能还具有入侵检测和预防系统(IDS/IPS)、应用层过滤、内容过滤、恶意软件检测等安全功能。

  8. 深度数据包检查:一些高级的网关设备可以进行深度数据包检查,对流经的数据进行深入分析,以提供更高级的安全和策略执行。

简而言之,网关(通常是你家中路由器的IP地址)是连接你的内部网络和外部网络(例如,互联网)的桥梁。当你的设备需要与外部网络通信时,它会将数据发送到网关,然后由网关处理后续的通信。


网桥与网关的区别

  1. 工作层次网桥在数据链路层工作,而网关在网络层工作,甚至可能涉及更高的层次。你可以理解为网桥是更加基础的网络设备,没有网桥,网络内部就无法通信。

  2. 功能:网桥主要用于扩展或隔离网络段,而网关用于连接两个不同的网络或协议。

  3. 复杂性:相对而言,网关的功能通常更加复杂,因为它需要处理不同网络或协议之间的转换。


网段

网段(Subnet)指的是一个具有相同网络前缀的IP地址块。这些IP地址在网络上是连续的,并共享同一个网络ID。例如,对于IPv4,192.168.1.0/24表示的是一个包含256个IP地址(从192.168.1.0192.168.1.255)的网段。

其中,/24表示ip前24位是固定不变的。对于IPv4,每一个小段的范围都是0~255,故都需要八位表示。前24位不变,则对应192.168.1.这三个小段不变。

默认情况下,docker0有一个与之关联的子网。通常,这个子网是172.17.0.0/16。这意味着docker0可以分配在此范围内的IP地址给容器。该子网就是docker0下的网段。

所以可得出结论:网关和内部网络的设备都位于同一个网段内。例如,如果你的设备IP地址是192.168.1.100,而默认网关是192.168.1.1,那么它们都在192.168.1.x的网段内。

通常,家庭或小型办公网络的路由器不仅作为网络的网关,还充当DHCP服务器的角色,为连接到网络的设备动态分配IP地址,确保这些地址都在同一个网段内。


网卡与网络接口

网卡(Network Interface Card,简称 NIC)是一个硬件组件,允许计算机或其他设备与网络连接。它为设备提供了一个物理的、通常是有线的接口,以便与局域网(如 Ethernet)或广域网(如 Internet)连接。现代计算机通常内置了网卡,但也有外部的 USB 或 PCIe 接口的网卡。

1. 实际的网卡例子

如果你查看一个台式机或服务器的背部,你可能会看到一个 RJ-45 接口,它是用于 Ethernet 连接的。这个接口是网卡的一部分。当你用 Ethernet 网线连接这个接口和路由器或交换机时,你的计算机就可以与网络通信了。

在软件层面,操作系统也会为这个物理网卡提供一个软件接口,通常被称为网络接口网络适配器。例如,在 Linux 系统中,这个接口可能被命名为 eth0ens33 等。

2. docker0与网络接口

docker0 是一个虚拟网桥,同时它也是一个网络接口。在 Linux 系统中,所有的网络连接,无论是物理的还是虚拟的,都通过网络接口来表示

        所以,当我们说 docker0 是一个网络接口时,我们是指它在操作系统中的表示形式。但在功能上,docker0 同时也具备网桥的特性,它可以连接多个 Docker 容器的虚拟网络接口,并允许这些接口进行内部通信。也就是说,docker0是一个网络接口,同时它也可以连接其他容器的网络接口,并且让它们互相通信,所以docker0也同时是一个网桥。

3. 容器与外界通信的流程

当容器想要与外部世界通信时,它们的流量从容器内部出发,经过这些容器的虚拟网络接口,然后通过 docker0 虚拟网桥,到达 docker0 的默认网关地址。最后,流量从宿主机的默认网关进入外部网络,例如互联网。

4. ens33

ens33 通常是一个物理网卡的网络接口,在某些 Linux 分发版中采用这种命名规则。它不是一个网桥。它表示的是一个物理网卡或虚拟机的虚拟网卡与网络之间的连接。

5. 区分网络接口和网桥

  • 网络接口这是一个更为通用的术语,代表任何形式的网络连接,无论是物理的(如 ens33)还是虚拟的(如 Docker 或 VM 中的虚拟网卡)。在 Linux 中,你可以使用 ip addrifconfig 命令来查看所有的网络接口。可以用于检查服务器的网络ip或者本文讲述的自定义网络。

  • 网桥:网桥是一种特殊的网络接口,它的主要功能是连接多个网络接口,并在它们之间转发数据。在功能上,网桥工作在数据链路层,并根据 MAC 地址来转发数据。在 Linux 中,你可以使用 brctl show 命令(需要安装 bridge-utils)来查看所有的网桥。

总之,所有的网桥都是网络接口,但并非所有的网络接口都是网桥。网卡是设备与网络之间的物理接口,而网桥(物理的或虚拟的)则是用来连接、过滤和转发同一种类型的网络的设备或软件。在 Docker 的场景中,docker0 是一个虚拟的网桥,它背后连接了多个容器的虚拟网络接口。

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

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

相关文章

一对一直播实时美颜SDK算法背后的技术原理与实现

美颜技术已经成为了现代社交媒体和视频通信的不可或缺的一部分。用户希望看起来最好,而实时美颜技术通过在实时视频中平滑皮肤、修复瑕疵以及增强特征来满足这一需求。这种技术的核心是实时美颜SDK,它蕴含着精密的算法和工程实现,本文将深入探…

成功解决@Async注解不生效的问题,异步任务处理问题

首先,有这样一个异步监听方法 然后配置好了异步线程池 package com.fdw.study.config;import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Conf…

维修派单系统好用吗?如何实现数字化后勤管理?

在当今社会,各种设备和设施的正常运转对于单位和组织来说至关重要。然而,由于各种因素的影响,设备和设施在日常运行过程中难免会出现故障。这时,高效的维修服务就显得尤为重要。而“的修”维修派单系统,就是一种专为维…

Java卷上天,可以转行干什么?

小刚是某名企里的一位有5年经验的高级Java开发工程师,每天沉重的的工作让他疲惫不堪,让他萌生出想换工作的心理,但是转行其他工作他又不清楚该找什么样的工作 因为JAVA 这几年的更新实在是太太太……快了,JAVA 8 都还没用多久&am…

怎么压缩pdf文件?分享缩小pdf文件的简单方法

在我们的日常生活和工作中,往往需要处理大量的PDF文件,而很多时候这些文件的大小会成为传输和存储的难题。为了解决这个问题,下面我们将介绍三种方法来压缩PDF文件,一起来看看吧~ 一、嗨格式压缩大师 首先,最简单也是…

Spring: @ComponentScan注解,不设置basePackages时,为什么会扫描该注解所在的包?

ComponentScanAnnotationParser类的parse方法: 可以看到如果没配置basePackages,会调用ClassUtils的静态方法getPackageName将声明ComponentScan的类所在的包添加到basePackages中去

山西电力市场日前价格预测【2023-10-08】

日前价格预测 预测说明: 如上图所示,预测明日(2023-10-08)山西电力市场全天平均日前电价为258.40元/MWh。其中,最高日前电价为496.19元/MWh,预计出现在18:45。最低日前电价为0.00元/MWh,预计出…

TouchDesigner专题_LeapMotion安装(win10系统)

如果你已经走到了其他教程的最后一步,出现报错 Connection failed.Ensure the device is connected and the correct version (4.1) of Leap Motion driver is installed 直接跳到最后一节就能解决 一、LeapMotion硬件 硬件部分很简单,就和手机数据线…

文件服务器审核

数据是所有组织的命脉,保护存储此重要资产的存储库对于防止不必要的暴露、盗窃和丢失至关重要,管理员和数据所有者应增强其文件服务器安全性、满足合规性要求等。 文件服务器审核工具 使用 DataSecurity Plus 无缝监控、警报和报告跨 Windows 文件服务…

深圳市重点实验室申报标准-华夏泰科

深圳市重点实验室,作为中国科技创新的引领者,扮演着关键的角色,旨在推动前沿科学研究和技术创新。申请重点实验室,可为企业带来莫大的荣誉并可为企业及机构提供宝贵的资源和支持,更可获得丰厚的现金支持。那么如何申请…

京东数据分析平台:2023年8月京东奶粉行业品牌销售排行榜

鲸参谋监测的京东平台8月份奶粉市场销售数据已出炉! 鲸参谋数据显示,8月份京东平台上奶粉的销售量将近700万件,环比增长约15%,同比则下滑约19%;销售额将近23亿元,环比增长约4%,同比则下滑约3%。…

HiveServer2 Service Crashes(hiveServer2 服务崩溃)

Troubleshooting Hive | 5.9.x | Cloudera Documentation 原因:别人用的都好好的,我的集群为什么会崩溃? 1.hive分区表太多(这里没有说具体数量。) 2.并发连接太多,我记的以前默认是200个连接 3.复杂的hive查询访问表的的分区…

【Vue面试题一】、说说你对 Vue 的理解

文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。 面试官:有使用过vue吗&#xff…

Apple developer证书、标识符和描述文件

Apple developer证书、标识符和描述文件 一、准备1,开发者账号2,CSR文件3,DeviceID 二、过程1,证书(Certificates)2、标识符(Identifiers)3、描述文件(Profiles&#xff…

C语言之动态内存管理篇(1)

目录 为什么存在动态内存分配 动态内存函数的介绍 malloc free calloc realloc 常见的动态内存错误 今天收假了,抓紧时间写几篇博客。我又来赶进度了。今天我们来讲解动态内存管理。🆗🆗 为什么存在动态内存分配 假设我们去实现一个…

Iris for Mac:轻松实现高质量录屏的最佳选择

随着数字化时代的到来,录屏软件已经成为了许多人必备的工具之一。无论是教育、工作还是娱乐,录屏软件都可以帮助我们将重要的操作过程或内容记录下来,并与他人分享。而对于Mac用户来说,一款简单易用且功能强大的录屏软件尤为重要。…

划片机:半导体生产的必备设备

划片机是半导体加工行业中的重要设备,主要用于将晶圆切割成晶片颗粒,为后道工序粘片做好准备。随着国内半导体生产能力的提高,划片机市场的需求也在逐渐增加。 在市场定位上,划片机可以应用于半导体芯片和其他微电子器件的制造过程…

015 Spring Boot网上商城(仿天猫)

一、系统介绍 需求设计主要参考天猫商城的购物流程: 用户从注册开始,到完成登录,浏览商品,加入购物车,进行下单,确认收货,评价等一系列操作。 作为迷你天猫商城的核心组成部分之一&#xff0…

为什么公司里月薪八千的PLC工程师经常离职?

今日话题,为什么公司里月薪八千的PLC工程师经常离职?这个问题涉及到工程师的个人偏好和工作性质的不同。许多工程师更喜欢在一个稳定的地方工作,而不是经常出差。然而,也有一些工程师喜欢出差,他们更愿意在不同的现场工…

PMP认证,对项目经理有什么用?

PMP是什么?学什么? PMP是由美国项目管理协会(PMI)在全球范围内推出的针对项目经理的资格认证体系,严格评估项目管理人员知识技能是否具有高品质的资格认证考试,其目的是为了给项目管理人员提供统一的行业标…