[Docker][Docker NetWork][下]详细讲解
目录
- 1.网络管理命令
- 1.docker network creatre
- 2.docker network inspect
- 3.docker network connect
- 4.docker network disconnect
- 5.docker network prune
- 6.docker network rm
- 7.docker network ls
- 2.docker bridge 详解
- 0.基本概念
- 1.默认 bridge
- 2.自定义 bridge
- 3.DNS解析
- 4.端口暴露和转发
- 3.docker host 详解
- 4.docker container 详解
- 5.docker none 详解
1.网络管理命令
1.docker network creatre
- 功能:创建自定义网络
- 语法:`docker network creatre [OPTIONS] NETWORK
- 关键参数:
-d, --driver
:网络驱动--gateway
:网关地址--subnet
:表示网段的CIDR格式的子网--ipv6
:启动ipv5
- 示例:
docker network creatre --driver=bridge --subnet=192.168.0.0/16 br0
2.docker network inspect
- 功能:查看网络详情
- 语法:
docker network inspect [OPTIONS] NETWORK [NETWORK...]
- 关键参数:
-f, --format
:指定格式
3.docker network connect
- 功能:
- 将容器连接到网络,可以按名称或ID连接容器
- 一旦连接,容器可以与同一网络中的其他容器通信
- 语法:
docker network connect [OPTIONS] NETWORK CONTAINER
- 关键参数:
--ip
:指定IP地址--ip6
:指定IPV6地址
- 示例:
# 将正在运行的容器连接到网络 docker network connect multi-host-network my_container1# 启动时将容器连接到网络 # 还可以使用docker run --network=<network-name>选项启动容器并立即将其连接到网络 docker run -itd --network=multi-host-network SnowK_Container# 指定容器的IP,可以指定要分配给容器网络接口的IP地址 docker network connect --ip 172.21.26.211 multi-host-network my_container2
4.docker network disconnect
- 功能:断开网络
- 语法:
docker network disconnect [OPTIONS] NERWORK CONTAINER
- 关键参数:
-f
:强制退出 - 示例:
docker network disconnect multi-host-network my_container
5.docker network prune
- 功能:删除不使用的网络
- 语法:
docker network prune [OPTIONS]
- 关键参数:
-f, --force
:强制删除
6.docker network rm
- 功能:删除1个或多个网络
- 语法:`docker network rm NETWORK [NETWORN…]
- 关键参数:
-f
:强制删除
7.docker network ls
- 功能:列出网络
- 语法:
docker network ls [OPTIONS]
- 关键参数:
-f, --filter
:指定过滤条件--format
:指定格式--no-trunc
:不截断-q, --quiet
:仅仅显示 id
2.docker bridge 详解
0.基本概念
- Docker Bridge网络采用内置的bridge驱动,bridge驱动底层采用的是 Linux内核中Linux bridge技术
- 就网络而言,bridge网络是在网络段之间转发流量的链路层设备, 而网桥可以是在主机内核中运行的硬件设备或软件设备
- 就Docker而言,桥接网络使用软件网桥
docker0
,它允许连接到同一网桥网络的容器进行通信,同时提供与未连接到该网桥网络容器的隔离
- Docker Container的bridge桥接模式
1.默认 bridge
-
默认情况下,创建的容器在没有使用
--network
参数指定要加入的 docker 网络时, 默认都是加入 Docker 默认的单机桥接网络 -
默认的bridge网络会被映射到内核中名为
docker0
的网桥上- Docker默认的bridge网络和Linux内核中的
docker0
网桥是对应关系 - bridge是Docker对网络的命名,而docker0是内核中网桥的名字
- Docker默认的bridge网络和Linux内核中的
-
容器间的网络通信
- 安装Docker的时候会默认docker0这个网桥软件设备,这个docker0设备可以类比成交换机/路由器设备
- 当创建好容器之后, 如果不手动指定网络模式,默认会使用bridge网络, 容器会自动连接到
docker0
这个网桥设备, 然后通过这个网桥来进行容器间的通信
2.自定义 bridge
- 除了默认的
docker0
,也可以创建一些自定义的bridge,让运行的容器通过自定义bridge进行通信 - 创建:
docker network create -d bridge new-bridge
- 连接:
docker run -itd --name c3 --network new-bridge SnowK
- 通过
--network
选项指定要连接的网络, - 如果不指定, 默认是连接的
bridge
- 通过
3.DNS解析
- Docker自定义桥接网络是支持通过Docker DNS服务进行域名解析的
- 可以直接使用容器名进行通信
- 因为DNS服务可以解析容器名到IP地址的映射, 但是默认的bridge网络是不支持DNS的
4.端口暴露和转发
- 暴露方式:端口暴露有2种方式,在启动容器的时候添加端口参数
-P
:暴露所有端口- 将指定的容器端口映射至主机所有地址的一个动态端口
- 动态端口 即 随机端口
- 具体的映射结果可使用
docker port
命令查看
- 将指定的容器端口映射至主机所有地址的一个动态端口
-p
:暴露指定端口- 语法:
-p <hostPort>:<containerPort>
- 功能:将容器端口
<containerPort>
映射至指定的主机端口<hostPort>
- 语法:
- 端口转发:连接
bridge
网络的容器只能与连接在当前网络中的容器进行通信。如果一个容器想要对外提供一些网络服务的话,需要进行端口转发才可以实现- 端口转发将Docker容器的端口映射到宿主机的端口上
- 任何发送到宿主机该端口的流量,都会被转发到容器的端口中
- 如下图所示,两个容器内部均开放80端口,它们分别映射到宿主机的8088和8089端口
- 任何发送到 8088 端口的流量都会转发到Container 1容器的80端口
- 任何发送到8089端口的流程都会转发到Container 2 容器的80端口
- 端口转发将Docker容器的端口映射到宿主机的端口上
3.docker host 详解
-
Docker容器运行默认都会分配独立的Network Namespace隔离子系统
-
但是如果基于host网络模式,容器将不会获得一个独立的Network Namespace,而是和宿主机共用同一个Network Namespace
- 容器将不会虚拟出自己的网卡,IP等,而是直接使用宿主机的IP和端口
- 连接到host网络的容器共享宿主机的网络栈,容器的网络配置与宿主机完全一样
-
适用场景:
bridge
网络在通信的时候需要进行端口转发以及NAT地址转换, 这势必会消耗掉一些资源以及性能- 直接使用host网络最大的好处就是性能好
- 如果容器对网络传输效率有较高的要求,建议选择host网络
- 当然也会牺牲一些东西,比如要考虑端口冲突问题,其他服务已经被占用的端口就不能再使用了
4.docker container 详解
-
Docker Container的other container网络模式是Docker中一种较为特别的网络的模式
- 之所以称为“other container模式“,是因为这个模式下的Docker Container,会使用其他容器的网络环境
- 之所以称为“特别”,是因为这个模式下容器的网络隔离性会处于bridge桥接模式与host模式之间
- Docker Container共享其他容器的网络环境,则至少这两个容器之间不存在网络隔离
- 而这两个容器又与宿主机以及除此之外其他的容器存在网络隔离
-
Docker Container的other container网络模式
-
Docker Container的other container网络模式实现逻辑如下:
- 查找other container(即需要被共享网络环境的容器)的网络namespace
- 将新创建的Docker Container(也是需要共享其他网络的容器)的namespace,使用other container的namespace
-
操作实例
# 创建一个容器 docker run -itd --name netcontainer1 SnowK# 使用netcontainer1的网络创建另外一个容器 docker run -itd --name netcontainer2 --network container:netcontainer1 SnowK
-
适用场景
- 在这种模式下的Docker Container可以通过localhost来访问namespace下的其他容器,传输效率较高
- 但是两个容器之间存在依赖,如果依赖容器重启了,会导致另外一个服务的网络不可用
5.docker none 详解
- none网络就是指没有网络,挂在这个网络下的容器除了lo(本地回环),没有其他任何网卡
- 适用场景
- 针对一些对安全性要求比较高并且不需要联网的应用, 可以使用none网络
- 比如生成随机密码, 避免生成密码被第三方获取
- 一些第三方的应用可能需要docker帮忙创建一个没有网络的容器, 网络由第三方自己来配置
- 针对一些对安全性要求比较高并且不需要联网的应用, 可以使用none网络
相关文章:

[Docker][Docker NetWork][下]详细讲解
目录 1.网络管理命令1.docker network creatre2.docker network inspect3.docker network connect4.docker network disconnect5.docker network prune6.docker network rm7.docker network ls 2.docker bridge 详解0.基本概念1.默认 bridge2.自定义 bridge3.DNS解析4.端口暴露…...
安卓系统在未来如何更好地解决隐私保护与数据安全的问题?
安卓系统可以通过以下方式更好地解决隐私保护与数据安全的问题: 强化权限控制:安卓系统可以进一步加强对应用程序权限的管理,确保用户能够清楚地知道应用程序需要哪些权限,并给予用户更多的控制权,例如允许用户选择性地…...
MySQL innodb单表上限一般多少
参考:https://www.zhihu.com/question/351797203/answer/3137174084 1.MySQL innodb单表上限为啥都说是2k万条 2.GaussDB for MySQL 为啥可以突破单表2k万的限制 要讨论这两个问题,得先明确性下实际的DB部署环境 表是索引数据是放在磁盘上的…...

更小、更安全、更透明:Google发布的Gemma推动负责任AI的进步
每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...

基于Django框架的医疗耗材管理系统的设计实现-计算机毕设定制-附项目源码(可白嫖)48999
摘 要 在目前的形势下,科技力量已成为我国的主要竞争力。而在科学技术领域,计算机的使用逐渐达到成熟,无论是从国家到企业再到家庭,计算机都发挥着其不可替代的作用,可以说计算机的可用领域遍及生活、工作的各个方面。…...
物联网协议篇(1):modbus tcp和modbusRTU的区别是什么?
Modbus TCP和Modbus RTU是Modbus协议中的两种主要变体,它们在多个方面存在显著的区别。以下是它们之间的主要区别: 1. 物理层和数据传输方式 Modbus TCP (TCP/IP): 使用以太网作为物理层,通过TCP/IP协议进行通信。数据以数据包的形式在TCP连接上传输,具有较高的通信速度和…...

JVM系列 | 对象的消亡——HotSpot的设计细节
HotSpot 的细节实现 文章目录 HotSpot 的细节实现OopMap 与 根节点枚举根节点类型及说明HotSpot中的实现 OopMap 与 安全点安全点介绍如何保证程序在安全点上? 安全区域记忆集与卡表记忆集卡表 写屏障并发的可达性分析(与用户线程)并发可达性…...
vue 运行或打包过程报错 JavaScript heap out of memory(内存溢出)
安装 increase-memory-limit npm install increase-memory-limit 运行increase-memory-limit ./node_modules/.bin/increase-memory-limit 运行后会报以下错误: "node --max-old-space-size10240" 不是内部或外部命令,也不是可运行的程序…...
git分支提交方法
先下载最新代码 改动文件覆盖 cp 文件到~/file/ git add添加文件 git commit提交本地 建立分支 git diff .c git status -uno git add git commit git checkout -b issue-lyd git push origin issue-lyd...

从微架构到向量化--CPU性能优化指北
引入 定位程序性能问题,相信大家都有很多很好的办法,比如用top/uptime观察负载和CPU使用率,用dstat/iostat观察io情况,ptrace/meminfo/vmstat观察内存、上下文切换和软硬中断等等,但是如果具体到CPU问题,我…...

声声入耳,事事如意 爱可声「如意」助听器即将上市!
如意助听器 Charm 爱可声全新系列「如意」助听器即将上市! 此次新品充分考虑了不同听损以及年龄的用户需求, 融合三大强劲性能。 1、多群体覆盖,定制个性化方案 如意助听器针对不同听损程度的听障患者设计了不同款式助听器,贴…...

生物实验室设备文件采集如何才能质量和效率双管齐下?
生物实验室的设备文件采集是实验室运营、科研活动和数据科学实践应用中不可或缺的一环。通过数据采集,实验室可以优化资源配置、提高实验结果的准确性和可靠性、支持科研水平的提升,并确保数据的安全性和可追溯性。因此,实验室应高度重视设备…...
Framework源码整编、单编、烧录过程
目录 一.背景 二.整编方式 二.单编方式 三.烧录 一.背景 源码编译分为整编和单编,整编通常耗时较长,单编则速度很多,如果我们进行一个小的修改想要立马验证的话单编就很合适 二.整编方式 开始执行编译操作,总共三步. 执行source操作source build/envsetup.sh .执行lunc…...
TypeScript类型断言
TypeScript类型断言是TypeScript中一个强大且有用的特性,它允许开发者在编译时明确指定一个值的类型,即使TypeScript无法自动推断出这个类型。类型断言类似于其他编程语言中的类型转换,但它不会改变变量的运行时值,而只是告诉编译…...

Mallet:一款针对任意协议的安全拦截代理工具
关于Mallet Mallet是一款功能强大的协议安全分析工具,该工具支持针对任意协议创建用于安全审计的拦截代理,该工具本质上与我们所熟悉的拦截Web代理类似,只是通用性更强。 工具运行机制 Mallet建立在Netty框架之上,并且依赖于Net…...

【IEEE出版】第五届大数据、人工智能与软件工程国际研讨会(ICBASE 2024,9月20-22)
第五届大数据、人工智能与软件工程国际研讨会(ICBASE 2024)将于2024年09月20-22日在中国温州隆重举行。 会议主要围绕大数据、人工智能与软件工程等研究领域展开讨论。会议旨在为从事大数据、人工智能与软件工程研究的专家学者、工程技术人员、技术研发人…...

自修室预约小程序的设计
管理员账户功能包括:系统首页,个人中心,学生管理,公告通知管理,自修室管理,座位预约管理,预约取消管理,管理员管理,系统管理 微信端账号功能包括:系统首页&a…...

用于跟踪个人图书馆的BookLogr
什么是 BookLogr ? BookLogr 是一款网络应用,旨在帮助您轻松管理个人图书馆。这项自托管服务可确保您完全控制数据,提供安全且私密的方式来跟踪您拥有、阅读或希望阅读的所有书籍。您也可以选择向公众自豪地展示您的图书馆,与您的…...
深入解析JVM垃圾回收机制:Full GC、Minor GC与Major GC
目录 引言垃圾回收的基本概念 什么是垃圾回收GC的分类JVM内存模型 堆内存非堆内存Minor GC 触发条件运行机制对性能的影响...

Windows10点击文件夹右键卡死的解决办法
1、首先同时按下【WinR】打开运行页面,输入命令【regedit】按下回车或者点击确定。 2、打开注册表编辑器后,定位到如下位置“HKEY_CLASSES_ROOT\Directory\Background\Shellex\ContextMenuHandlers”。 3、然后在其中将所有名为“New”的文件或项全部删…...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造,完美适配AGV和无人叉车。同时,集成以太网与语音合成技术,为各类高级系统(如MES、调度系统、库位管理、立库等)提供高效便捷的语音交互体验。 L…...
逻辑回归:给不确定性划界的分类大师
想象你是一名医生。面对患者的检查报告(肿瘤大小、血液指标),你需要做出一个**决定性判断**:恶性还是良性?这种“非黑即白”的抉择,正是**逻辑回归(Logistic Regression)** 的战场&a…...

边缘计算医疗风险自查APP开发方案
核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...

visual studio 2022更改主题为深色
visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中,选择 环境 -> 常规 ,将其中的颜色主题改成深色 点击确定,更改完成...

STM32F4基本定时器使用和原理详解
STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

376. Wiggle Subsequence
376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...

《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》
在注意力分散、内容高度同质化的时代,情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现,消费者对内容的“有感”程度,正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中࿰…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放
简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...

Spring数据访问模块设计
前面我们已经完成了IoC和web模块的设计,聪明的码友立马就知道了,该到数据访问模块了,要不就这俩玩个6啊,查库势在必行,至此,它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据(数据库、No…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...