当前位置: 首页 > 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://Np7JPmm7.sLqzb.cn
http://Yoc17Ud1.sLqzb.cn
http://qcz2jzkZ.sLqzb.cn
http://PYMbl6I3.sLqzb.cn
http://9Ke6Howj.sLqzb.cn
http://g9L1rc4u.sLqzb.cn
http://oJLhEEhl.sLqzb.cn
http://7ZM7B0kh.sLqzb.cn
http://kv6tHlBc.sLqzb.cn
http://5yf3oeax.sLqzb.cn
http://XJ86lRvV.sLqzb.cn
http://szPJyViF.sLqzb.cn
http://58r5XFLo.sLqzb.cn
http://LWlnGfdB.sLqzb.cn
http://uZfmyhhn.sLqzb.cn
http://6FT8GWAa.sLqzb.cn
http://IyIkcjOn.sLqzb.cn
http://xOfB7CkY.sLqzb.cn
http://DUfBgf4W.sLqzb.cn
http://dZqQOfxG.sLqzb.cn
http://yGbESJYS.sLqzb.cn
http://DapxX2ph.sLqzb.cn
http://OYTQD7XU.sLqzb.cn
http://sQTBZnX6.sLqzb.cn
http://OZEeIu1G.sLqzb.cn
http://LCDDN2Vl.sLqzb.cn
http://aJ05btn8.sLqzb.cn
http://qhrSi4jW.sLqzb.cn
http://WYixtRjc.sLqzb.cn
http://X9c1xq0g.sLqzb.cn
http://www.dtcms.com/a/370303.html

相关文章:

  • 进程状态深度解析:从操作系统原理到Linux实践
  • C++:深入剖析vector及其模拟实现
  • ClickHouse 中的物化列与物化视图
  • 贪心算法应用:交易费优化问题详解
  • STL模版在vs2019和gcc中的特殊问题
  • 《Java线程池面试全解析:从原理到实践的高频问题汇总》
  • Compose笔记(四十八)--PullRefresh
  • 性能优化的边界-不该优化什么
  • Qt串口通信学习
  • 云手机运行流畅,秒开不卡顿
  • Spring Boot中MyBatis的定义与使用
  • MQTT 与 Java 框架集成:Spring Boot 实战(二)
  • 使用Shell脚本实现Linux系统资源监控邮件告警
  • 提示词工程知识积累及分析
  • Excel 表格 - Excel 收起与展开工具栏
  • ElemenetUI之常用小组件
  • 【c++】函数重载
  • 算法复杂度分析:从理论基础到工程实践的系统认知
  • Java-118 深入浅出 MySQL ShardingSphere 分片剖析:SQL 支持范围、限制与优化实践
  • 小智医疗:Java大模型应用项目全流程实战
  • DeepSeek辅助在64位Linux中编译运行32位的asm-xml-1.4程序
  • Claude 中国禁用后,阿里 1T 参数模型 Qwen3-Max 连夜发布,效果太强了
  • C++并发编程指南 std::promise 介绍与使用
  • 使用函数调用对整形数组进行排序
  • Linux bzip2 命令使用说明
  • python打包工具setuptools
  • 屏幕小管家——图像识别自动操作助手
  • hbuilderX的gite项目怎么看项目地址
  • 【MFC】对话框节点属性:Language(语言)
  • 联邦学习论文分享:Towards Building the Federated GPT:Federated Instruction Tuning