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

【Docker】Docker network之bridge、host、none、container以及自定义网络的详细讲解

🚀欢迎来到本文🚀
🍉个人简介:陈童学哦,目前学习C/C++、算法、Python、Java等方向,一个正在慢慢前行的普通人。
🏀系列专栏:陈童学的日记
💡其他专栏:C++STL,感兴趣的小伙伴可以看看。
🎁希望各位→点赞👍 + 收藏⭐️ + 留言📝 ​
⛱️万物从心起,心动则万物动🏄‍♂️

在这里插入图片描述

前言:Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux系统 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。


之前文章我们提及过Docker network以及几种网络模式,但没有过多的深入,那么本文就会深入讲解一下Dockernetwork的bridge、host、none、container以及自定义网络。

Docker network之bridge、host、none、container以及自定义网络的详细讲解

  • Docker network 之bridge
  • Docker network 之host
  • Docker network 之none
  • Docker network 之container
  • Docker network 之自定义网络

Docker network 之bridge

在Docker中,bridge网络是默认的网络驱动程序,它提供了一种简单而方便的方式来连接Docker容器和主机。下面是关于Docker bridge网络的详细讲解:

1.概述:
  Bridge网络允许容器之间通过网络进行通信,并且容器可以通过主机网络访问外部资源。每当你安装Docker时,就会自动创建一个名为"docker0"的虚拟网桥,作为主机和容器之间通信的桥接点。
2.桥接方式:
  ridge网络采用的是基于MAC地址的桥接方式,每个容器都会分配一个唯一的MAC地址,并且可以通过容器名称或ID进行通信。
3.IP分配:
  每个容器在启动时都会自动分配一个IP地址,这个IP地址是在桥接网络的地址范围内生成的。默认情况下,Docker使用172.17.0.0/16子网作为桥接网络的地址范围。
4.连接到桥接网络:
  可以使用--network参数来指定容器连接到哪个桥接网络。如果没有指定网络,则默认连接到bridge网络。可以使用docker network create命令创建自定义的桥接网络,并使用--network参数将容器连接到该网络。
5.主机访问:
  通过桥接网络,容器可以通过主机网络访问外部资源,例如互联网或其他本地网络。桥接网络会自动配置主机和容器间的路由规则,使得容器可以通过主机进行网络通信。
6.容器之间通信:
  桥接网络允许容器之间通过IP地址进行通信,可以使用容器的名称或ID来标识目标容器。例如,可以使用ping命令来测试容器之间的连通性。
7.网络别名:
  桥接网络还支持为容器分配多个网络别名,这样可以在同一网络中使用不同的名称访问容器。这在容器之间进行服务发现和负载均衡时非常有用。

在这里插入图片描述

  总结来说,Docker bridge网络提供了容器之间和容器与主机之间的通信方式,并且可以连接到外部网络资源。它是Docker默认的网络驱动程序,通过桥接方式实现容器之间的通信,并自动分配IP地址和配置路由规则。

Docker network 之host

在Docker中,host网络是一种网络驱动程序,它允许容器与主机共享网络命名空间。使用host网络驱动程序时,容器将直接使用主机的网络栈,与主机共享IP地址和端口。下面是关于Docker host网络的详细讲解:

1.网络共享:
  使用host网络时,容器与主机共享相同的网络栈,这意味着它们具有相同的IP地址和端口空间。容器可以直接使用主机的网络设备和网络配置。
2.网络性能:
  由于容器直接使用主机的网络栈,host网络驱动可以获得最佳的网络性能。容器之间的通信不需要通过任何网络层的封装和解封装,减少了网络延迟和开销。
3.网络隔离:
  与其他网络驱动程序相比,host网络提供了最小的网络隔离。容器之间可以直接访问彼此的端口和服务,没有任何网络地址转换或端口映射。
4.端口冲突:
  由于容器与主机共享相同的端口空间,可能会导致端口冲突。如果主机上已经有一个服务在使用某个端口,那么容器将无法使用该端口。
5.容器访问外部资源:
  容器可以通过host网络直接访问主机网络和外部资源,例如互联网或其他本地网络。容器可以使用主机的网络设备和配置,无需进行任何额外的网络设置。

需要注意的是,使用host网络可能会降低容器的安全性和隔离性。由于容器与主机共享网络栈,容器之间可以直接相互访问,这可能增加了潜在的安全风险。因此,在使用host网络时,需要谨慎考虑网络安全和隔离性的需求。

在这里插入图片描述


  总结起来,Docker host网络允许容器与主机共享网络栈,具有最佳的网络性能,容器可以直接访问主机网络和外部资源。但需要注意可能的端口冲突和降低的安全性和隔离性。

Docker network 之none

在Docker中,none网络是一种特殊的网络驱动程序,它提供了一种完全隔离的网络环境,即容器将没有任何网络连接。下面是关于Dockernone网络的详细讲解:

1.完全隔离:
  使用none网络时,容器将没有任何网络连接,包括网络接口和IP地址。这意味着容器无法通过网络与其他容器或主机进行通信。
2.适用场景:
  none网络适用于那些不需要网络连接的容器,例如一些执行计算任务的容器或需要与外部环境完全隔离的容器。
3.容器访问外部资源:
   由于容器没有任何网络连接,因此无法直接访问主机网络或外部资源,例如互联网或其他本地网络。如果需要访问外部资源,可以通过其他方式,如使用主机的网络连接或使用其他网络驱动程序。
4.网络配置:
   当使用none网络时,容器不会分配IP地址,也不会创建任何网络接口。这使得容器无法通过网络进行通信,并且无法通过IP地址来标识和访问容器。
5.容器之间通信:
   由于none网络不提供任何网络连接,容器之间无法直接进行通信。如果需要容器之间的通信,可以考虑使用其他网络驱动程序,如bridge、overlay等。

需要注意的是,使用none网络将完全隔离容器的网络环境,这可能导致容器无法完成某些需要网络连接的任务,或者无法访问外部资源。因此,在使用none网络时,需要确保已经考虑到了这些限制,并根据实际需求做出合适的选择。


   总结来说,Docker none网络提供了一种完全隔离的网络环境,容器在该网络中没有任何网络连接。它适用于不需要网络连接的容器,但也意味着容器无法通过网络与其他容器或主机进行通信,并且无法访问外部资源。

Docker network 之container

在Docker中,container网络是一种特殊的网络模式,它允许将一个容器的网络栈直接共享给另一个容器使用。这样可以实现容器之间的网络通信,而无需通过网络接口和网络配置。下面是关于Docker container网络的详细讲解:

1.容器网络共享:
   使用container网络模式时,一个容器的网络栈(包括网络接口和IP地址)可以直接共享给另一个容器使用。这样,两个容器之间可以通过本地主机进行内部通信,就像它们运行在同一个主机上一样。
2.网络隔离:
  尽管容器之间可以通过共享网络栈进行通信,但它们仍然是相互隔离的。每个容器都有自己的文件系统、进程和命名空间,因此它们之间的环境是独立的。
3.网络配置:
  当一个容器连接到另一个容器的网络时,它会自动获得一个新的网络接口和IP地址。这个IP地址是在共享网络的子网中生成的,并且可以通过容器名称或ID进行访问。
4.容器之间通信:
  通过container网络模式,容器可以直接使用本地主机进行内部通信。它们可以通过IP地址或容器名称进行标识和访问。
5.网络别名:
  使用container网络模式时,可以为容器分配多个网络别名。这样,可以使用不同的名称访问同一个容器,这对于服务发现和负载均衡非常有用。
6.容器访问外部资源:
  由于container网络模式是基于主机网络的,因此容器可以通过本地主机访问外部资源,例如互联网或其他本地网络。

需要注意的是,使用container网络模式将共享一个容器的网络栈给另一个容器使用,这可能会导致网络性能的损失。同时,由于容器之间共享网络,需要确保容器之间的通信是安全和可靠的。

在这里插入图片描述


总结来说,Docker container网络模式允许一个容器的网络栈直接共享给另一个容器使用,实现容器之间的内部通信。它提供了简单且高效的方式来连接容器,并允许容器通过本地主机访问外部资源。

Docker network 之自定义网络

在Docker中,自定义网络是一种灵活且强大的网络模式,它允许用户创建和管理自己的网络。自定义网络提供了一种逻辑隔离的网络环境,使得容器可以在该网络中进行通信。下面是关于Docker自定义网络的详细讲解:

1.创建自定义网络:
  使用Docker命令或Docker Compose可以创建自定义网络。用户可以指定网络的名称、网、网关和其他配置选项。
2.网络隔离:
  每个自定义网络都是一个逻辑隔离的网络环境,容器可以在该网络中进行通信。不同的自定义网络之间是相互隔离的,容器只能在同一个自定义网络中进行通信。
3.容器连接到自定义网络:
  创建自定义网络后,可以将容器连接到该网络。容器连接到自定义网络后,会获得一个新的网络接口和IP地址,可以通过该IP地址在同一网络中进行通信。
4.网络别名和服务发现:
  使用自定义网络,可以为容器分配网络别名。这样,可以通过容器名称或别名来标识和访问容器,而不仅仅是使用IP地址。这对于服务发现和负载均衡非常有用。
5.外部访问:
  通过端口映射,可以将自定义网络中的容器暴露给外部网络,以便从外部网络访问容器。这可以通过将容器的端口映射到主机的端口来实现。
6.多网络连接:
  容器可以连接到多个自定义网络,以实现不同网络环境之间的通信。这使得容器可以同时参与多个网络,并实现复杂的网络拓扑。
7.网络驱动程序:
  Docker支持多种网络驱动程序,包括bridge、overlay和macvlan等。自定义网络可以选择适合特定需求的驱动程序,以获得所需的网络功能和性能。

在这里插入图片描述

总结来讲,Docker自定义网络提供了一种灵活且强大的网络模式,允许用户创建和管理自己的网络。自定义网络提供了逻辑隔离和灵活的网络配置选项,使得容器可以在该网络中进行通信,并支持服务发现和负载均衡等功能。


如果本文对大家有所帮助的话,还望各位能给我点赞、收藏并评论一下,感谢各位💕!!! 另如果大家有什么疑问或者建议的话,欢迎评论区留言。

在这里插入图片描述

相关文章:

【Docker】Docker network之bridge、host、none、container以及自定义网络的详细讲解

🚀欢迎来到本文🚀 🍉个人简介:陈童学哦,目前学习C/C、算法、Python、Java等方向,一个正在慢慢前行的普通人。 🏀系列专栏:陈童学的日记 💡其他专栏:CSTL&…...

滑模控制器理论推导和matlab/simulink实例分享

滑模控制的运动轨迹主要分为两个方面:(1)系统的任意初始状态向滑模面运动阶段;(2)系统到达滑模面后并且慢慢趋于稳定的阶段。所以,对于滑模变结构控制器的设计,对应于系统运动的两个阶段,可以分为两个部分:…...

git 操作

git切换ssh和http协议 切换协议: 查看当前remote git remote -v 切换到http: git remote set-url https://github.com/username/repository.git 切换到ssh: git remote set-url gitgithub.com:username/repository.git 某些文件不想提交…...

自建hexo博客并将原有的文章发布其上

1、保存粘贴到memo9中的博客文章,并将txt转换成word文档 varPowerShellPath, CommandLine: string; // , ScriptPath begin//save to txtMemo9.Lines.SaveToFile(test.txt);memo10.Lines.SaveToFile(txt2word.ps1);//save as docxPowerShellPath : powershell.exe…...

【双指针_和为 s 的两个数_C++】

和为s的两个数字 class Solution { public:vector<int> twoSum(vector<int>& nums, int target) {int n nums.size();int left 0;int right n-1;while(left<right){if(nums[left]nums[right]>target) right--;else if(nums[left]nums[right]<tar…...

HTML5的介绍和基本框架

目录 HTML5 HTML5介绍 HTML5的DOCTYPE声明 HTML5基本骨架 html标签 head标签 body标签 title标签 meta标签 在vscode中写出第一个小框架 HTML5 HTML5介绍 HTML5是用来描述网页的一种语言&#xff0c;被称为超文本标记语言。用HTML5编写的文件&#xff0c;后缀以.ht…...

代码随想录算法训练营第58天|动态规划part15|392.判断子序列、115.不同的子序列

代码随想录算法训练营第58天&#xff5c;动态规划part15&#xff5c;392.判断子序列、115.不同的子序列 392.判断子序列 392.判断子序列 思路&#xff1a; &#xff08;这道题也可以用双指针的思路来实现&#xff0c;时间复杂度也是O(n)&#xff09; 这道题应该算是编辑距…...

日常BUG——普通页面跳转tabbar页面报错

&#x1f61c;作 者&#xff1a;是江迪呀✒️本文关键词&#xff1a;日常BUG、BUG、问题分析☀️每日 一言 &#xff1a;存在错误说明你在进步&#xff01; 一、问题描述 微信小程序页面跳转的时候出现下面的问题&#xff1a; wx.redirectTo({url: /pages/index/i…...

SpringBoot复习:(48)RedisAutoConfiguration自动配置类

RedisAutoConfiguration类代码如下&#xff1a; 可以看到在这个类中配置了2个bean: redisTemplate和stringRedisTemplate. 而它通过EnableConfigurationProperties(RedisProperties.class)注解&#xff0c;把配置文件中配置的Redis相关的信息引入进来了&#xff0c;RedisPrope…...

软硬件免费,服务收费:网络安全商业模式正在被颠覆

大数据产业创新服务媒体 ——聚焦数据 改变商业 从元宇宙到造汽车&#xff0c;重回国内A股市场五年的360一路苦追热点。一直到大模型横空出世&#xff0c;360才算真正找到感觉&#xff0c;经历一次战略上的回归。 在8月9日的互联网安全大会上&#xff0c;一袭红衣的红衣教主周…...

变形金刚:从零开始【01/2】

一、说明 在我们的日常生活中&#xff0c;无论你是否是数据科学家&#xff0c;你都在单向地使用变压器模型。例如。如果您使用的是 ChatGPT 或 GPT-4 或任何 GPT&#xff0c;那么在为您回答问题的框中是变压器的一部分。如果您是数据科学家或数据分析师&#xff0c;则可能正在使…...

Opencv特征检测之ORB算法原理及应用详解

Opencv特征检测之ORB算法原理及应用详解 特征是图像信息的另一种数字表达形式。一组好的特征对于在指定 任务上的最终表现至关重要。视觉里程 (VO) 的主要问题是如何根据图像特征来估计相机运动。但是,整幅图像用来计算分析通常比较耗时,故而转换为分析图像中的特征点的运动…...

【es6】函数柯里化(Currying)

柯里化&#xff08;Currying&#xff09;&#xff1a;把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数&#xff0c;并且返回接受余下的参数且返回结果的新函数。 柯里化由 Christopher Strachey 以逻辑学家 Haskell Curry 命名的&#xff0c;它是 Mos…...

线上多域名实战

本文博主给大家分享线上多域名实战&#xff0c;当线上主域名不可用的情况下&#xff0c;启用备用域名完成网站高可用保障。 网站的高可用性一直是网站运维的重中之重。一旦网站宕机&#xff0c;不仅会造成巨大的经济损失&#xff0c;也会严重影响用户体验。备份域名就是一种实现…...

【C语言】上手实验

实验1 顺序、分支结构 程序填空 1. 题目描述&#xff1a;输入三个整数存放在变量a、b、c中&#xff0c;找出三个数中的最大值放于max中&#xff0c;并将其输出。以下是完成此项工作的程序&#xff0c;请将未完成的部分填入&#xff0c;实现其功能&#xff0c;并在计算机上…...

设计HTML5表单

HTML5基于Web Forms 2.0标准对HTML4表单进行全面升级&#xff0c;在保持简便、易用的基础上&#xff0c;新增了很多控件和属性&#xff0c;从而减轻了开发人员的负担。表单为访问者提供了与网站进行互动的途径&#xff0c;完整的表单一般由控件和脚本两部分组成。 1、认识HTML…...

使用Kaptcha生成验证码

说明&#xff1a;验证码&#xff0c;是登录流程中必不可少的一环&#xff0c;一般企业级的系统&#xff0c;使用都是专门制作验证码、审核校验的第三方SDK&#xff08;如极验&#xff09;。本文介绍&#xff0c;使用谷歌提供的Kaptcha技术&#xff0c;制作一个简单的验证码。 …...

【vue】vue中的插槽以及使用方法

插槽 普通插槽 1、在父组件中直接调用子组件的标签&#xff0c;是可以渲染出子组件的内容&#xff1b;如果在子组件标签中添加了内容&#xff0c;父组件就渲染不出来了&#xff1b; ParentComponent.vue&#xff1a; <template><div><h1>Parent Componen…...

javaScript:分支语句的理解与使用(附带案例)

目录 前言 补充 另一种说法 分支语句 1.if语句 a.单分支语句 注意 b.双分支语句 注意点 c.多分支语句&#xff08;分支语句的联级语句&#xff09; 补充 2.三元运算符 三元运算符 &#xff1f; &#xff1a; 使用场景 3.switch语句 解释 释义&#xff1a…...

MySQL高阶知识点(一)事务的并发问题和隔离级别

简单来说&#xff0c;事务就是要保证一组数据库操作&#xff0c;要么全部成功&#xff0c;要么全部失败。 在 MySQL 中&#xff0c;事务支持是在引擎层实现的。 MySQL 是一个支持多引擎的系统&#xff0c;但并不是所有的引擎都支持事务。 如 MySQL 原生的 MyISAM 引擎就不支持…...

<6>-MySQL表的增删查改

目录 一&#xff0c;create&#xff08;创建表&#xff09; 二&#xff0c;retrieve&#xff08;查询表&#xff09; 1&#xff0c;select列 2&#xff0c;where条件 三&#xff0c;update&#xff08;更新表&#xff09; 四&#xff0c;delete&#xff08;删除表&#xf…...

Xshell远程连接Kali(默认 | 私钥)Note版

前言:xshell远程连接&#xff0c;私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...

大型活动交通拥堵治理的视觉算法应用

大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动&#xff08;如演唱会、马拉松赛事、高考中考等&#xff09;期间&#xff0c;城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例&#xff0c;暖城商圈曾因观众集中离场导致周边…...

【Java学习笔记】BigInteger 和 BigDecimal 类

BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点&#xff1a;传参类型必须是类对象 一、BigInteger 1. 作用&#xff1a;适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...

Fabric V2.5 通用溯源系统——增加图片上传与下载功能

fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...

LLMs 系列实操科普(1)

写在前面&#xff1a; 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容&#xff0c;原视频时长 ~130 分钟&#xff0c;以实操演示主流的一些 LLMs 的使用&#xff0c;由于涉及到实操&#xff0c;实际上并不适合以文字整理&#xff0c;但还是决定尽量整理一份笔…...

libfmt: 现代C++的格式化工具库介绍与酷炫功能

libfmt: 现代C的格式化工具库介绍与酷炫功能 libfmt 是一个开源的C格式化库&#xff0c;提供了高效、安全的文本格式化功能&#xff0c;是C20中引入的std::format的基础实现。它比传统的printf和iostream更安全、更灵活、性能更好。 基本介绍 主要特点 类型安全&#xff1a…...

【Elasticsearch】Elasticsearch 在大数据生态圈的地位 实践经验

Elasticsearch 在大数据生态圈的地位 & 实践经验 1.Elasticsearch 的优势1.1 Elasticsearch 解决的核心问题1.1.1 传统方案的短板1.1.2 Elasticsearch 的解决方案 1.2 与大数据组件的对比优势1.3 关键优势技术支撑1.4 Elasticsearch 的竞品1.4.1 全文搜索领域1.4.2 日志分析…...

C++--string的模拟实现

一,引言 string的模拟实现是只对string对象中给的主要功能经行模拟实现&#xff0c;其目的是加强对string的底层了解&#xff0c;以便于在以后的学习或者工作中更加熟练的使用string。本文中的代码仅供参考并不唯一。 二,默认成员函数 string主要有三个成员变量&#xff0c;…...

【iOS】 Block再学习

iOS Block再学习 文章目录 iOS Block再学习前言Block的三种类型__ NSGlobalBlock____ NSMallocBlock____ NSStackBlock__小结 Block底层分析Block的结构捕获自由变量捕获全局(静态)变量捕获静态变量__block修饰符forwarding指针 Block的copy时机block作为函数返回值将block赋给…...