Docker学习笔记-网络类型

Docker 网络类型

1、Docker四种网络模式

(1)docker四种网络模式如下:

  • Bridge contauner 桥接式网络模式
  • Host(open) container 开放式网络模式
  • Container(join) container 联合挂载式网络模式,是host网络模式的延伸
  • None(Close) container 封闭式网络模式

(2)可以通过docker network命令查看

在这里插入图片描述

(3)docker run --net 命令可以指定使用网络模式


2、Bridge模式

当Docker进程启动时,会在主机上创建一个名为docker0的虚拟网桥,处于七层网络模型的数据链路层,起到了交换机的作用,此主机上启动的Docker容器会连接到这个虚拟网桥上, 所以有默认地址172.17.0.0/16的地址。虚拟网桥的工作方式和物理交换机类似,这样主机上的所有容器就通过交换机连在了一个二层网络中。

docker0子网中分配一个IP给容器使用,并设置docker0的IP地址为容器的默认网关。在主机上创建一对虚拟网卡veth pair设备,Docker将veth pair设备的一端放在新创建的容器中,并命名为eth0(容器的网卡),另一端放在主机中,以vethxxx这样类似的名字命名,并将这个网络设备加入到docker0网桥中。可以通过brctl show命令查看。

这个命令在bridge-utils中,需要提前安装 apt install bridge-utils

在这里插入图片描述

bridge模式是docker的默认网络模式,不写–net参数,就是bridge模式。
使用docker run -p时,docker实际是在iptables做了DNAT规则,实现端口转发功能。可以使用iptables -t nat -vnL查看。

容器拥有独立的network namespace,且拥有独立的IP、端口、路由等,使用veth pair连接docker0网桥,并以dockero网桥为默认网关。


说明:

  • –net=bridge 可省略 ,-p 指定端口映射
  • 虚拟网桥默认 IP 范围是一般都是 172.17.x.x

DNAT 的概念

DNAT,全称 Destination NAT,就是在数据包进入网络层时,把 目标 IP 地址目标端口号 改成另外一个地址或端口。

  • D → Destination(目的地址)

  • NAT → Network Address Translation(网络地址转换)

常见用途:

  • 端口映射(Port Forwarding)

  • 负载均衡(把外部请求转发到后端多台服务器)

  • Docker 容器端口转发(宿主机端口 → 容器端口)


3、host模式

如果给容器指定为host模式,那么该容器就没有独立的network namespace,而是共用宿主机的。所以,容器不会有自己的网卡信息,而是使用宿主机的IP和端口。但除了网络,其他像文件系统、进程等和宿主机依然是隔离的。

注意:容器和宿主机公用一个IP地址,但使用的端口不能被宿主机占用,也不能相同。


4、None模式

在None模式下,容器有自己的Network Namespace,但是并不为Docker 容器进行任何网络配置。也就是说,这个Docker 容器没有网卡,ip, 路由等信息。

这种类型没有办法联网,但是封闭的网络能很好的保证容器的安全性,该容器将完全独立于网络,用户可以根据需要为容器添加网卡。此模式拥有所有端口。特殊情况下才会用到,一般不用。

5、container模式

这个模式指定新创建的容器和已经存在的一个容器共享一个Network Namespace,而不是和宿主机共享。
新创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP,端口范围等。
可以在一定程度上节省网络资源,容器内部依然不会拥有所有端口。同样,两个容器除了网络方面,其他的如文件系统,进程列表等还是隔离的。
两个容器的进程可以通过网卡设备通信。
新建的容器与指定容器共享IP地址,但不能使用相同的端口。


以上四种网络模式只考虑的是容器和宿主机、容器和容器之间的通信,只能在同一台机器里,不能跨主机通信。


6、overlay模式–》实现跨宿主机的docker之间的通信

底层原理是VXLAN.

7、自己动手新建一个网络接口sc,让新建的容器连接到这个接口上来

在这里插入图片描述

docker inspect sc-nginx-1 查看容器详情

使用iptables 查看

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传


ip add 命令输出详解

ip add 输出展示了主机上的 所有网络接口(物理的 + 虚拟的),包括 Docker 创建的虚拟网络。


1. lo

  • 名字lo

  • 类型:回环接口(Loopback)

  • 作用:本地环回测试使用,IP 地址 127.0.0.1::1,用于进程之间本机通信,不经过物理网卡。


2. ens33

  • 名字ens33

  • 类型:物理网卡(Ethernet 接口)

  • 作用:主机真实的网络接口,连接到你所在的物理网络/虚拟机 NAT/桥接环境。

  • IPv4 地址192.168.237.177/24,说明主机在 192.168.237.0/24 网段。


3. docker0

  • 名字docker0

  • 类型:Docker 默认创建的 Linux 桥接网卡(bridge)

  • 作用:当容器使用默认网络(bridge 网络模式)时,容器的虚拟网卡都会挂到这个网桥上,实现容器与主机之间通信。

  • 默认 IPv4:一般是 172.17.0.1/16,但你这里只显示了 IPv6 地址。


4. veth3a2f510@if2

  • 名字veth...

  • 类型:veth pair(虚拟以太网设备对)的一端

  • 作用:每个容器都会有一个 veth pair,一端在容器命名空间内,另一端接入主机上的 docker0(或其他 Docker 网络桥)。

  • 说明@if2 表示另一端连接到编号 2 的接口(容器内的 veth 设备)。


5. br-2737d7fbbbe5

  • 名字br-2737d7fbbbe5

  • 类型:Docker 用户自定义 bridge 网络

  • 作用:当你用 docker network create 创建自定义网络时,Docker 会在主机上创建一个 Linux bridge,并分配子网。

  • IPv4 地址172.18.0.1/16,说明该网络的容器默认分配 172.18.x.x 地址。


6. vethaa59346@if2

  • 名字veth...

  • 类型:veth pair 的一端

  • 作用:挂在 br-2737d7fbbbe5 上,对应一个容器的网络接口。另一端在容器内部。


7. vethc5ed6bb@if2

  • 名字veth...

  • 类型:veth pair 的一端

  • 作用:同上,也是 br-2737d7fbbbe5 桥接的一个容器接口。


🔹 总结

  • 物理/本机接口

    • lo:本地回环

    • ens33:主机物理网卡(192.168.237.177)

  • Docker 默认网络

    • docker0:默认 bridge

    • veth3a2f510:挂在 docker0 上的容器接口

  • Docker 自定义网络

    • br-2737d7fbbbe5:自定义 bridge(172.18.0.1)

    • vethaa59346 / vethc5ed6bb:挂在该自定义 bridge 上的容器接口

c4734961-d9ac-4f3a-9290-b979757bcb59

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

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

相关文章

SDRAM详细分析-08 数据手册解读

大家好,这里是大话硬件。 前面我们梳理了很多关于内存的内容,不知道有没有人好奇,为什么要花这么大的精力做这些内容? 在4月份的时候,三星宣布将在2025年逐步停产DDR4内存颗粒,随后海力士和镁光也跟着一起,都宣布逐步停产DDR4颗粒。这三家半导体厂商在内存方面顶了半边…

Windows 环境下部署 MinIO 集群

文章目录介绍软件特点下载多机分布式集群部署1.前提准备2. 新建minio工作目录3. 编写运行命令4. 启动、测试5. nginx配置介绍 MinIO 是一款高性能、开源、云原生的分布式对象存储系统,专为私有云、公有云和边缘计算场景设计,完全兼容 Amazon S3 API&…

鸿蒙libxm2交叉编译

一开始先使用了lycium,但是没有编译通过 改为使用源码自带的配置文件编译 我使用的源码是libxml2-2.9.10.tar.gz 解压后进行下面的配置: root@ubuntu:/home/lw/libxml2-2.9.10# export OHOS_SDK=/home/lw/ohos-sdk/linuxroot@ubuntu:/home/lw/libxml2-2.9.10# export AS=…

MCAP :机器人数据容器的全面实践指南

Outline: MCAP 已形成完整工具链生态: Foxglove Studio:可视化分析工具mcap-cli:跨平台命令行工具AWS RoboMaker:原生云存储支持 随着 IEEE 正在制定的 P3196 机器人数据标准,MCAP 正在演进为行业基础架构的重要组成…

【Bluedroid】A2dp Source播放流程源码分析(7):蓝牙音频流启动流程深度解析(btif_av_stream_start)

本文深入分析Android Bluetooth协议栈中A2DP音频流启动的完整流程,从应用层调用btif_av_stream_start()开始,穿越BTIF、BTA、AVDTP多层架构,最终通过L2CAP发送AVDTP启动命令。揭示状态机驱动、异步消息传递、流控制等核心机制。并通过代码与日志结合的方式,揭示蓝牙音频流从…

Miniconda安装与VSCode搭建远程Python、Jupyter开发环境

前言 数据科学和机器学习工作流程中,当本地计算机无法满足计算任务的需求时,往往需要一个更强大计算能力的远程环境。另一方面,VSCode由于其轻便和易用性,以及丰富的插件生态系统,一直是远程开发的首选编辑器。本文介绍…

vue3前端开发的基础教程——快速上手

【前言】这里使用的技术栈:fastapivue3pycharm一、创建vue3项目在项目的文件夹使用下面命令创建vue3前端框架代码npm create vitelatest frontend选择框中选择: Framework: VueVariant: JavaScript 或 TypeScript cd frontend npm install启动本地开发np…

51单片机2(按键,外部中断,定时器中断,PWM与蜂鸣器)

1.按键模块以按键k1为例&#xff1a;两个引脚被接到GND和P1_4引脚&#xff0c;当K1按键被按下时&#xff0c;P1_4引脚会和GND短路到一起&#xff0c;P1_4引脚会呈现低电平。按键初始化&#xff1a;//按键初始化 void Key_Init(void) {P1 | (0x0f << 4);P3 | (1 << …

【面试向】人工智能机器学习介绍

一、介绍 人工智能&#xff08;AI&#xff09;是通过模拟、延伸和扩展人类智能的技术&#xff0c;使机器能够感知、理解、决策和行动。核心目标是实现“智能自动化”&#xff0c;即让机器在复杂、动态的环境中自主完成任务&#xff0c;甚至超越人类在特定领域的能力。 机器学…

Python趣味入门:打印与计算初体验

1. 尝试使用 print() 打印各种内容print() 是我们在Python中最先接触也是最常用的函数之一。它的核心功能是将内容输出到控制台。让我们用它来玩点花样&#xff1a;在您的IDE中创建一个新的Python文件&#xff08;例如 play_with_print.py&#xff09;&#xff0c;然后尝试以下…

swagger接口文档规范化(苍穹外卖)

swagger接口文档规范化 &#xff08;1&#xff09;说明&#xff1a; 将接口文档分为管理端和用户端 &#xff08;2&#xff09;WebMvcConfiguration修改 位置&#xff1a;sky-server/src/main/java/com/sky/config/WebMvcConfiguration.java 文件完整代码&#xff1a; pa…

Transformer 架构的演进与未来方向(RNN → Self-Attention → Mamba)——李宏毅大模型2025第四讲笔记

一句话总结——“所有架构都为了解决上一代模型的致命缺陷而生&#xff1a;CNN 解决参数爆炸&#xff0c;ResNet 解决梯度消失&#xff0c;Transformer 解决 RNN 无法并行&#xff0c;而 Mamba 则试图一次解决 Transformer 的 O(N) 与 RNN 的记忆瓶颈。”1 每种架构的存在理由•…

Vllm-0.10.1:通过vllm bench serve测试TTFT、TPOT、ITL、E2EL四个指标

一、KVM 虚拟机环境GPU:4张英伟达A6000(48G)内存&#xff1a;128G海光Cpu:128核大模型&#xff1a;DeepSeek-R1-Distill-Qwen-32B推理框架Vllm:0.10.1二、四个性能指标介绍2.1、TTFT:Time to First token首次生成token时间&#xff08;ms&#xff09;,TTFT 越短&#xff0c;用户…

逻辑回归基础

昨天一直在复盘梯度下降&#xff0c;都没咋预习逻辑回归&#xff0c;好在不是很难&#xff0c;来捋捋逻辑回归简介逻辑回归是解决分类问题数学基础-sigmoid函数还要回顾一下概率论极大似然估计再来看一下对数逻辑回归原理逻辑回归的损失函数例子&#xff1a;分类问题评估混淆矩…

STM32----W25QXX

W25QXX款图W25QXX存储解读块--->扇-->页块分成128块一块64kb一块分成16扇一扇4kb一个扇区分成16页&#xff0c;页的大小是256个字节 当数据传入W25QXX最小的擦除单元是扇区当已经输入了一页的数据&#xff0c;这时RAM的数据会转存进FLASH&#xff0c;这时会置一个标志位&…

【Kafka】Kafka使用场景用例Kafka用例图

【Kafka】Kafka使用场景用例&Kafka用例图一、Kafka用例总图二、Kafka用例图示三、Kafka场景案例图一、Kafka用例总图 二、Kafka用例图示 三、Kafka场景案例图 注&#xff1a;以上图片来源于网络&#xff0c;如有不妥请私信删除&#xff01;

Altium Designer(AD24)集成开发环境简介

🏡《专栏目录》 目录 1,概述 2,界面介绍 2,搜索功能简介 1,概述 Altium Designer 24的原理图,PCB等设计工作都是在集成开发环境中进行的,本文简单介绍集成开发环境界面。 2,界面介绍 如下图所示,Altium Designer 24的集成开发环境,包括: 标题栏:目前设计中文件的…

[论文阅读] 软件工程 | 告别“线程安全玄学”:基于JMM的Java类静态分析,CodeQL3分钟扫遍GitHub千仓错误

告别“线程安全玄学”&#xff1a;基于JMM的Java类静态分析&#xff0c;CodeQL3分钟扫遍GitHub千仓错误 论文信息类别详情论文原标题Scalable Thread-Safety Analysis of Java Classes with CodeQL主要作者及机构1. Bjrnar Haugstad Jatten&#xff08;哥本哈根IT大学&#xff…

jQuery.ajax() 方法核心参数详解

大家好&#xff0c;欢迎来到程序视点&#xff01;我是你们的老朋友.小二&#xff01;jQuery.ajax() 方法核心参数详解基础参数url类型&#xff1a;String功能&#xff1a;请求地址&#xff0c;默认当前页地址。type类型&#xff1a;String&#xff08;get/post为主&#xff0c;…

LCR 175. 计算二叉树的深度【简单】

LCR 175. 计算二叉树的深度【简单】 题目描述 某公司架构以二叉树形式记录&#xff0c;请返回该公司的层级数。 示例 1&#xff1a;输入&#xff1a;root [1, 2, 2, 3, null, null, 5, 4, null, null, 4] 输出: 4 解释: 上面示例中的二叉树的最大深度是 4&#xff0c;沿着路…