当前位置: 首页 > 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 引擎就不支持…...

嵌入式开发工具选择与效率提升实践

1. 嵌入式开发者的工作状态与开发工具选择1.1 程序员工作场景分析嵌入式开发者在家庭办公环境中往往表现出独特的工作状态。通过观察典型的工作场景&#xff0c;我们可以总结出几个关键特征&#xff1a;专注度提升&#xff1a;家庭环境减少了办公室干扰&#xff0c;开发者更容易…...

MoveIt Config 配置文件完整一致性检查

检查范围&#xff08;全部核对完毕&#xff09;ros2_control xacro&#xff08;硬件接口 / 关节&#xff09;initial_positions.yaml&#xff08;初始位置&#xff09;srdf&#xff08;运动组 / 关节&#xff09;joint_limits.yaml&#xff08;关节限制&#xff09;kinematics.…...

嵌入式串口协议中间件:轻量级SerHelp库设计与应用

1. 项目概述nahs-Bricks-Lib-SerHelp是 NAHS&#xff08;North American Home System&#xff09;生态中面向嵌入式砖块化&#xff08;Brick-based&#xff09;硬件平台的一套轻量级串行通信辅助库。该库不提供底层驱动实现&#xff0c;而是聚焦于串口协议层的工程化封装与通用…...

MicroOS:Arduino轻量级任务调度内核详解

1. MicroOS&#xff1a;面向Arduino的轻量级任务管理内核概述MicroOS是一个专为Arduino平台设计的极简型实时任务管理器&#xff0c;其核心定位并非替代FreeRTOS或Zephyr等完整RTOS&#xff0c;而是填补Arduino原生loop()单线程模型在多任务调度、精确定时与事件解耦方面的空白…...

用STM32+物联网做个智能药盒:手把手教你搞定毕设硬件选型与代码框架

基于STM32的智能药盒开发实战&#xff1a;从硬件选型到云端联调 在老龄化社会加速和慢性病管理需求激增的背景下&#xff0c;智能医疗设备正从医院走向家庭。作为嵌入式开发者&#xff0c;将STM32与物联网技术结合打造智能药盒&#xff0c;不仅能解决实际用药管理痛点&#xff…...

避坑指南:Pyannote3.1+Whisper本地部署的5个常见报错解决方案

避坑指南&#xff1a;Pyannote3.1Whisper本地部署的5个常见报错解决方案 语音处理技术正在重塑教育、会议记录和客服质检等场景的交互方式。当开发者尝试将Whisper的精准语音识别与Pyannote的说话人分离能力结合时&#xff0c;常会在环境配置环节遭遇"拦路虎"。本文…...

全能B站资源管理工具:BiliTools让视频下载与管理效率提升90%

全能B站资源管理工具&#xff1a;BiliTools让视频下载与管理效率提升90% 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱&#xff0c;支持视频、音乐、番剧、课程下载……持续更新 项目地址: https://gitcode.com/GitHub_Trending/bili…...

无需编程!用OFA模型快速搭建图文匹配工具:上传即测,结果秒出

无需编程&#xff01;用OFA模型快速搭建图文匹配工具&#xff1a;上传即测&#xff0c;结果秒出 1. 图文匹配的痛点与解决方案 你有没有遇到过这样的困扰&#xff1f;在网上购物时&#xff0c;商品图片和描述对不上&#xff1b;浏览社交媒体时&#xff0c;配图与文字内容完全…...

别再只会抓HTTP了!手把手教你配置Fiddler抓取手机App的HTTPS请求(含证书安装避坑)

移动端HTTPS抓包实战&#xff1a;Fiddler配置与证书避坑指南 每次看到App里那些神秘的网络请求&#xff0c;你是不是也好奇它们到底在传输什么数据&#xff1f;作为开发者或测试人员&#xff0c;能够抓取和分析这些请求是基本功。但面对HTTPS加密流量&#xff0c;很多新手往往束…...

终极指南:如何在.NET应用中快速集成VLC多媒体播放功能

终极指南&#xff1a;如何在.NET应用中快速集成VLC多媒体播放功能 【免费下载链接】Vlc.DotNet .NET control that hosts the audio/video capabilities of the VLC libraries 项目地址: https://gitcode.com/gh_mirrors/vl/Vlc.DotNet Vlc.DotNet是一个强大的.NET库&am…...