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

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.xdnf.cn/news/1477711.html

相关文章:

  • 【干货推荐】AI助理前端UI组件-悬浮球组件
  • 下载数据集用于图像分类并自动分为训练集和测试集方法
  • Python零基础速成指南:12周从小白到项目实战
  • uniapp | 解决组件样式不生效问题
  • uniapp新增页面及跳转配置方法
  • 【最新版】超级好用的软件卸载工具IObit Uninstaller v15.0.0.8 中文解压即用版 告别残留烦恼
  • 力扣p2009 使数组连续的最少操作数 详解
  • ELFK:企业级日志管理的完整解决方案——从入门到精通
  • 尚硅谷宋红康JVM全套教程(详解java虚拟机)
  • 苍穹外卖项目实战(day-5完整版)-记录实战教程及问题的解决方法
  • 2025高教社国赛数学建模C题参考论文(含模型和代码)
  • 【面试向】人工智能机器学习介绍
  • 【51单片机-B030】【protues仿真】基于51单片机万年历系统
  • 心路历程-passwdusermod命令补充
  • 嵌入式学习——ARM 体系架构1
  • [光学原理与应用-422]:非线性光学 - 计算机中的线性与非线性运算
  • PHP - pack/unpack「字符串/二进制字符串」- 学习/实践
  • Week 15: 深度学习补遗:集成学习初步
  • C++算法学习——链表
  • 基于Scikit-learn集成学习模型的情感分析研究与实现
  • Day12--HOT100--23. 合并 K 个升序链表,146. LRU 缓存,94. 二叉树的中序遍历
  • 腾讯混元翻译模型Hunyuan-MT-7B开源,先前拿了30个冠军
  • Go基础(③Cobra)
  • STM32——Flash闪存
  • 自动化运维,ansible综合测试练习题
  • Ceph分布式存储全解析:从了解到使用
  • 新能源研发,用新型实验记录本:ELN
  • 006-Dephi 表达式 选择语句 循环语句其他语句
  • k8s网络原理
  • Qt自定义列表项与QListWidget学习