Docker网络的概念

news2024/9/19 22:06:14

一、说明

        本文叙述Docker网络,介绍关于Docker网络、网桥网络、网桥网络、自定义网桥网络、主机网络、无网络 MACVLAN 和 IPVLAN 网络、叠加网络等网络模式。Docker 是一个用于开发、发布和运行应用程序的开放平台。 

二、 什么是 Docker Networking?

        Docker 网络是 Docker 容器连接到同一主机或不同主机上的其他容器以及外部世界(即通过互联网)的一种方式。

        Docker 的网络子系统可以使用驱动程序进行插拔。默认情况下存在多个驱动程序,并提供核心网络功能。

        有各种各样的Docker网络,例如:

  • 网桥网络
  • 主机网络
  • 无网络
  • MACVLAN和IPVLAN网络
  • 叠加网络

三、关于 Docker 网络

        在本文中,我们将讨论各种可用的 docker 网络,并尝试实现这些网络,以便在开始使用各种网络类型方面具有实践经验。

        所以,让我们开始吧。

        要查看系统上的所有可用网络,请使用给定的命令:

docker network ls

3.1 网桥网络

3.1.1 默认网桥网络

        每当我们安装 docker 时,它都会创建一个默认的桥接网络,所有没有定义网络的容器都可以连接到该网络。

        它是一种将容器与底层主机网络隔离的解决方案。

        如果我们检查此网络,我们会发现以下内容:

docker inspect bridge

        这是输出中最重要的部分之一。

        我们看到使用特定的子网和网关创建了一个单独的接口(docker0)。在此网络中启动的任何 docker 容器将仅占用指定网络中的 IP 地址。

我们启动一个没有指定网络的nginx容器:

docker run -d -p 8080:80 --name mynginx1 nginx

— 名称 => 它定义了容器的名称。

-p => 此选项将容器的端口 80 映射到主机的端口 8080。它允许您通过访问主机来访问容器内运行的 NGINX Web 服务器。localhost:8080

-d => 这在分离或守护程序模式下运行容器,即后台。

nginx => 它是我们使用的图像的名称。

现在,让我们类似地启动另一个容器:

docker run -d -p 8081:80 --name mynginx2 ngin
docker inspect mynginx1 mynginx2 | grep IPAddress

        查看他们的 IP 地址。

        mynginx1 的 IP 为 172.17.0.2,mynginx2 的 IP 为 172.17.0.3。这证明已连接到默认主机网桥。

但这有缺点。但是,网桥是与主机网络的隔离解决方案。如果未指定网络,则无法隔离,因为所有容器将仅连接到此默认网桥。Docker在自定义桥接网络的帮助下解决了这个问题。

3.1.2 自定义网桥网络

        创建自定义网桥网络将创建其自己的单独网络 ID、接口、子网和网关。

        这将有助于创建隔离的基础结构。

docker network create custom

        让我们检查一下以查看上述详细信息:

docker inspect custom

        在此网络中启动容器,并查看其 IP 是否位于自定义网桥的子网中。

        要启动,请使用 — 网络标记:

docker run -d -p 8082:80 --name mynginx3 --network custombridge nginx

        可以登录到一个容器并ping同一网络中的其他容器以测试实现

3.2 主机网络

        有时我们不需要与主机隔离,我们可以简单地在主机网络上启动容器并直接使用主机网络。

docker run -d --name hostnginx --network host nginx

        我们在这里不使用 -p 标签,因为没有连接到任何其他网络。这将在主机网络中启动容器。

3.3 无网络None Net

        当存在需要与任何类型的网络完全隔离的容器时,此网络非常有用。

使用 — 在这种情况下为网络。

3.4 MACVLAN和IPVLAN网络

        它们通常用于在主机上运行的应用程序,但它们需要与物理网络不同的单独 IP 地址。

        可以使用 MACVLAN 网络驱动程序为每个容器的虚拟网络接口分配 MAC 地址,使其看起来像是直接连接到物理网络的物理网络接口。

        如果我们在系统上运行一些服务(具有明确定义的端口),并且我们想启动这些服务,但不能要求容器将其公开给未明确定义的端口。例如,如果我们已经在端口 80(nginx 定义良好的端口)上运行 nginx,并且我们想要一个新的 nginx 服务,我们将不得不将其公开给主机上的不同端口。但是由于这样做很麻烦,我们可以在这里使用 MACVLAN。

        要创建一个,我们可以使用:

docker network create -d macvlan --subnet x.x.x.x/20 --gateway x.x.x.x -o parent=eth0 macnetwork

我从在我的 Linux 容器上运行 ifconfig 获得的子网。

现在,我们可以在这个创建的MAC网络上启动不同的服务。

docker run -d --name macnginx --network macnetwork nginx

在检查网络和容器时,我们发现:

苹果网络-

麦克金克斯 -

        MACVLAN和IPVLAN之间的基本区别在于,MACVLAN为每个连接的docker容器分配不同的MAC地址,IPVLAN为每个连接到它的所有容器分配相同的MAC地址。

3.5  叠加网络

        在 Docker Swarm 集群的情况下使用覆盖网络。

        它是连接在一起的几个节点,以创建一个集群来管理运行在其上的容器数量。因此,所有节点之间需要有某种网络连接。

        覆盖网络用于为 Docker Swarm 集群中的 Docker 节点创建内部专用网络。

        这将是一个通用网络,将存在于 Swarm 集群中的所有节点上。

四、结论

        我相信这篇文章将有助于理解Docker网络的基础知识,并且读者可以通过这种理解来轻松改进他们的Docker基础架构。Docker是一个非常深入的话题,一开始就了解Docker网络将使学习曲线相对不那么陡峭,当一个人转向高级主题时。

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

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

相关文章

如何在HTML里面使用session

原因在springboot项目里面不想使用jsp界面,怎么在HTML里面使用session呢? 借助sessionStorage方法,话不多说直接上代码 自定义一个js文件把这个代码放里面就可,根据具体业务来修改 // globalData 可以随便定义,调用的…

Facebook AI mBART:巴别塔的硅解

2018年,谷歌发布了BERT(来自transformers的双向编码器表示),这是一种预训练的语言模型,在一系列自然语言处理(NLP)任务中对SOTA结果进行评分,并彻底改变了研究领域。类似的基于变压器…

Shell脚本基础教程

Shell脚本基础教程 Shell参数定义 定义变量 想要定义变量,只需要使用如下命令即可。 variable_namevariable_valuevariable_name表示变量名,variable_value表示变量值。注意,等号与变量名和变量值之间不能有空格。 变量名的命名需要遵循…

速通蓝桥杯嵌入式省一教程:(六)PWM输出

定时器除了用于最基本的定时器计时中断以外,还可以用于输出PWM(Pulse Width Modulation)波,即脉冲宽度调制波形,也就是频率与占空比均可改变的矩形波。下面我们就使用PA1端口生成PWM波。 在Cube中,首先需要将PA1设置成定时器的通…

Android LiveData原理之-setValue和数据倒灌原理分析

一图胜万言,直接上图吧!有需要的同学们可以对着这张泳道图阅读源码,相信能够快速加深理解。

3:Ubuntu上配置QT交叉编译环境并编译QT程序到Jetson Orin Nano(ARM)

1.Ubuntu Qt 配置交叉编译环境 1.1 ubuntu 20.04安装Qt sudo apt-get install qtcreator 1.2 配置QT GCC配置同上 最后配置Kits 上面设置完成之后 ,设置Kits 中的Device(这是为了能够直接把项目部署到arm设备上) 点击NEXT之后会出现连接被拒绝,不用担…

IEC61499/ OPCUA pub/sub 测试

OpenDACS 是基于OPCUA 信息模型的IEC61499 分布式自动控制系统。本文介绍它如何采用Opcua Pub/Sub 实现分布式设备中功能块之间的通信。 4diac 构建IEC61499 系统和应用 系统结构 试验系统共有三台设备,为了实验方便,我们让它们在一台Linux PC 上运行…

智能文件改名,一键与上上级目录名称同步,让文件整理更加便捷

在整理文件时,经常会遇到需要将文件名称与上上级目录名称保持一致的情况。手动逐个修改文件名不仅费时费力,还容易出错。现在,我们为你带来了一款智能文件改名工具,让你能够一键将文件名称改成跟上上级目录名称一样,让…

Qt+C++跑马灯-指示灯-风扇-虚线灯带-动画仿真

程序示例精选 QtC跑马灯-指示灯-风扇-虚线灯带-动画仿真 如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对<<QtC跑马灯-指示灯-风扇-虚线灯带-动画仿真>>编写代码&#xff0c;代码整…

Vulnhub靶机系列 Infosec_Warrior1

InfoSecWarrior CTF 2020: 01官网地址 难易程度&#xff1a;So Easy 信息收集 主机发现 arp-scan -l端口扫描 nmap -A -p- 192.168.80.145目录爆破 dirsearch -u 192.168.80.145 -i 200访问80端口&#xff0c;只能看出是Apache站点&#xff0c;没有别的 访问一下sitemap.xm…

火山引擎ByteHouse:一套方案,让OLAP引擎在精准投放场景更高效

由于流量红利逐渐消退&#xff0c;越来越多的广告企业和从业者开始探索精细化营销的新路径&#xff0c;取代以往的全流量、粗放式的广告轰炸。精细化营销意味着要在数以亿计的人群中优选出那些最具潜力的目标受众&#xff0c;这无疑对提供基础引擎支持的数据仓库能力&#xff0…

开源ChatGPT系统源码 采用NUXT3+Laravel9后端开发 前后端分离版本

开源ChatGPT系统源码 采用NUXT3Laravel9后端开发 前后端分离版本 ChatGPT是一种基于AI的聊天机器人技术&#xff0c;它可以帮助用户与聊天机器人进行自然语言交流&#xff0c;以解决用户的问题或满足用户的需求。ChatGPT的核心技术是使用自然语言处理&#xff08;NLP&#xff…

设计模式之组合模式(Composite)的C++实现

1、组合模式的提出 在软件开发过程中&#xff0c;使用者Client过多依赖所操作对象内部的实现结构&#xff0c;如果对象内部的实现结构频繁发生变化&#xff0c;则使用者的代码结构将要频繁地修改&#xff0c;不利于代码地维护和扩展性&#xff1b;组合模式可以解决此类问题。组…

JQuery快速入门教程

1、JQuery快速入门 1.1、JQuery介绍 jQuery 是一个 JavaScript 库。所谓的库&#xff0c;就是一个 JS 文件&#xff0c;里面封装了很多预定义的函数&#xff0c;比如获取元素&#xff0c;执行隐藏、移动等&#xff0c;目的就 是在使用时直接调用&#xff0c;不需要再重复定义…

蓝牙 - BLE SPP的设计策略(Serial over BLE strategy)

在开发 BLE 连接产品的过程中&#xff0c;你可能会有这样的疑问&#xff1a;"Serial profile在哪里&#xff1f;也许你以为你在蓝牙技术联盟网站上滚动浏览长长的profile列表时错过了它。又或者&#xff0c;你根本就没去看&#xff0c;而是准备选择更快的方法&#xff0c;…

第 359 场 LeetCode 周赛题解

A 判别首字母缩略词 签到题… class Solution { public:bool isAcronym(vector<string> &words, string s) {string pf;for (auto &s: words)pf.push_back(s[0]);return pf s;} };B k-avoiding 数组的最小总和 贪心&#xff1a;从 1 1 1开始升序枚举&#xff0c…

mybatis-plus--配置-(sql)日志输出-自动填充-分页-多数据源-逻辑删除

写在前面&#xff1a; 本文主要介绍mybatis-plus的配置&#xff0c;以后在有的时候在补充。欢迎交流。 文章目录 日志输出自动填充分页全局字段配置多数据源 日志输出 调试的时候需要看执行的sql&#xff0c;这时候就很需要日志来记录查看了。 mybatis-plus的日志配置在yml…

葡萄目标检测(yolov8模型,无需修改路径,python代码,解压缩后直接运行)

运行效果视频&#xff1a;葡萄目标检测&#xff08;yolov8模型&#xff0c;无需修改路径&#xff0c;python代码&#xff0c;解压缩后直接运行&#xff09;_哔哩哔哩_bilibili 1.采用yolov8模型 models文件夹保存的是yolov8的训练好的模型参数 PinotNoir文件夹存放的是训练集 …

局部变量可能会引发的错误---误判---用阶乘函数求强数的 Python 程序中遇到的问题

背景介绍 今天遇到这样一个额需求&#xff1a;用阶乘函数求强数的 Python 程序。所谓强数&#xff0c;就是一个特殊数字&#xff0c;满足其所有数字阶乘的和应等于数字本身的条件。 问题描述 def facorial_of_number(number):result 1for i in range(1, number 1):result *…