HelloCoder HelloCoder
首页
《Java小白求职之路》
《小白学Java》
计算机毕设
  • 一些免费计算机资源
  • 脚手架工具
  • 《从0到1学习Java多线程》
  • 《从0到1搭建服务器》
  • 《可观测和监控》
  • 《k8s学习心得》
随笔
关于作者
首页
《Java小白求职之路》
《小白学Java》
计算机毕设
  • 一些免费计算机资源
  • 脚手架工具
  • 《从0到1学习Java多线程》
  • 《从0到1搭建服务器》
  • 《可观测和监控》
  • 《k8s学习心得》
随笔
关于作者
  • 《从0到1学习Java多线程》

  • 《从0到1搭建服务器》

  • 可观测和监控

  • 玩转IDEA

  • 03-RPC

  • 04-Spring源码

  • 05-《Java日志框架》

  • Flyme公有云平台建设
  • k8s

    • (一)线程是什么
    • 常见疑问
    • 运行一个k8s部署的应用
    • 网络组件
    • docker compose和k8s deployment文件
    • dokcer的网卡
    • k8s-master初始化网段
    • Kubernetes API Service
    • k8s的DNS
    • 什么是 Sandbox
    • 如何访问pod
    • 常见命令
  • 专栏
  • k8s
#dokcer #网卡
HaC
2026-06-13
目录

dokcer的网卡

# 网卡

当你初次启动docker的时候,它会创建一个 docker0 的网卡。

# 宿主机网卡

[root@yudianxx ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet 10.255.255.254/32 brd 10.255.255.254 scope global lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc mq state DOWN group default qlen 1000
    link/ether 00:ff:b8:a2:ae:6d brd ff:ff:ff:ff:ff:ff
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
    link/ether 42:a1:42:42:a0:1e brd ff:ff:ff:ff:ff:ff
    inet 172.18.0.1/16 brd 172.18.255.255 scope global docker0
       valid_lft forever preferred_lft forever
    link/ether 02:42:63:4f:a0:2d brd ff:ff:ff:ff:ff:ff
4: br-2931f0e3f4dd: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
    link/ether 9e:bd:c7:8b:40:88 brd ff:ff:ff:ff:ff:ff
    inet 172.19.0.1/16 brd 172.18.255.255 scope global br-2931f0e3f4dd
       valid_lft forever preferred_lft forever

# Docker应用网卡

是的,docker网卡也有自己的eth0

[root@yudianxx ~]# docker exec -it docker-hermes-manager sh
# ipconfig
sh: 15: ipconfig: not found
# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.18.0.3  netmask 255.255.0.0  broadcast 172.18.255.255
        ether 8e:c8:d0:a6:c9:b6  txqueuelen 0  (Ethernet)
        RX packets 21918  bytes 13945391 (13.2 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 17844  bytes 12887855 (12.2 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 779  bytes 155329 (151.6 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 779  bytes 155329 (151.6 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

docker0 本质是 Linux 网桥,是容器默认互通、容器访问宿主机 / 外网的核心虚拟交换机。

docker0 是你安装 Docker 引擎时,Docker 自己在 Linux 内核里创建的一个虚拟网桥。它的宿命是为通过 docker run 跑起来的普通容器分配 172.18.0.3 的 IP。

# 访问流程

# 文字流程解释

  1. 宿主机访问 192.168.1.50:8080,数据包到达物理网卡 ens160;

  2. Linux iptables 匹配 Docker 自动创建的 DNAT 规则:

    将访问 :8080的流量,目标 IP + 端口替换为 172.18.0.3:80;

  3. 修改后的数据包交给自定义网桥 docker0;

  4. 通过 veth pair 传递到容器 eth0,容器服务接收请求;

  5. 容器返回响应包,网桥回传给宿主机;

  6. iptables 做 SNAT 地址还原,最终响应返回宿主机客户端。

#

你可能现在会产生巨大的好奇:为什么我们用 Docker 容器技术起家,到了 K8s 里,Docker 自己的网桥(docker0)反而成了摆设?

在以前的历史版本中,K8s 依赖 Docker 运行时,创建 Pod 时确实会借用 Docker 的底层网络。但由于我们这次搭建集群彻底抛弃了 Docker 引擎,改用了 Containerd 容器运行时,整个网络生命周期的掌控者就彻底换人了。

在传统的 Docker 单机网络中,容器依赖 docker0 网桥进行 NAT 转发和单机通信,跨主机网络需要依赖繁琐的端口映射或 Overlay Overlay。

而我们在搭建生产级 K8s 集群时,全面采用了 CRI(Containerd)与 CNI(Flannel) 的解耦架构。此时,Docker 引擎自带的 docker0 网卡已被完全弃用(处于 DOWN 状态)。

K8s 遵循 IP-per-Pod 的扁平化网络原则。Containerd 调用的 CNI 插件会在内核中创建全新的 cni0 网桥和 flannel.1 隧道网卡,直接通过 VXLAN 技术 实现跨宿主机的三层直接互通,消灭了传统 Docker 网络的端口冲突与双重 NAT 损耗,从而保障了分布式微服务网关的高性能通信。”

阅读全文
×

(为防止恶意爬虫)
扫码或搜索:HelloCoder
发送:290992
即可永久解锁本站全部文章

解锁
#dokcer#网卡
上次更新: 2026-06-13 17:29:54
最近更新
01
(一)线程是什么
06-14
02
MySQL支持的锁有哪些
06-13
03
HTTP 是不保存状态的协议, 如何保存用户状态
06-13
更多文章>
Theme by Vdoing | Copyright © 2020-2026 HaC
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式