[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”的文件或项全部删…...
深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录
ASP.NET Core 是一个跨平台的开源框架,用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录,以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...
React Native 开发环境搭建(全平台详解)
React Native 开发环境搭建(全平台详解) 在开始使用 React Native 开发移动应用之前,正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南,涵盖 macOS 和 Windows 平台的配置步骤,如何在 Android 和 iOS…...
逻辑回归:给不确定性划界的分类大师
想象你是一名医生。面对患者的检查报告(肿瘤大小、血液指标),你需要做出一个**决定性判断**:恶性还是良性?这种“非黑即白”的抉择,正是**逻辑回归(Logistic Regression)** 的战场&a…...
解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八
现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...
高频面试之3Zookeeper
高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个?3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制(过半机制࿰…...
五年级数学知识边界总结思考-下册
目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解:由来、作用与意义**一、知识点核心内容****二、知识点的由来:从生活实践到数学抽象****三、知识的作用:解决实际问题的工具****四、学习的意义:培养核心素养…...
将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?
Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...
基于数字孪生的水厂可视化平台建设:架构与实践
分享大纲: 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年,数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段,基于数字孪生的水厂可视化平台的…...
学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1
每日一言 生活的美好,总是藏在那些你咬牙坚持的日子里。 硬件:OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写,"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...
全志A40i android7.1 调试信息打印串口由uart0改为uart3
一,概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本:2014.07; Kernel版本:Linux-3.10; 二,Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01),并让boo…...
