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

Docker容器技术原理

Docker容器技术原理

一、容器技术本质

容器底层原理:容器不是虚拟机,本质是受 Namespace 隔离、CGroup 资源限制、UnionFS(Overlay2)做分层文件系统,拥有独立文件系统的普通进程,直接复用宿主机 Linux 内核。镜像提供只读 rootfs 模板,实例化后生成容器,容器新增可写层运行业务进程。

  1. 三大核心支撑技术
    • Namespace(命名空间):实现隔离,把进程的 PID、网络、挂载、用户、主机名等系统资源隔开,容器内部看不到宿主机其他进程资源。
    • CGroup:实现资源限制,对 CPU、内存等硬件资源做配额管控,限制容器能使用多少宿主机资源。
    • UnionFS(联合文件系统,Docker 默认 Overlay2):实现镜像分层存储,多层镜像叠加形成容器统一文件视图。
  2. 容器 vs 传统虚拟机对比
    • 容器:共享宿主机内核,启动秒级,资源损耗极小;隔离基于内核,隔离强度弱于虚拟机。
    • 虚拟机:Hypervisor 之上运行完整 Guest OS,启动慢,资源开销大,硬件级强隔离。
  3. 运行时分层
    • 低层运行时(runc):负责调用内核,做 Namespace、CGroup 配置,启动容器进程。
    • 高层运行时(containerd):封装低层,提供镜像管理、容器生命周期管理、API 能力。

二、Docker 存储原理(Overlay2)

  1. Docker 默认存储驱动为 overlay2,属于 UnionFS 实现。将镜像拆分为多层只读层,容器启动时新增一层可写层。
  2. 目录位置:宿主机/var/lib/docker/overlay2存放各层文件;merged目录是多层叠加后给容器看到的完整文件视图。
  3. 写时复制 CoW:修改文件时,把只读层文件拷贝到上层可写层再修改,只读镜像层不会改动。
  4. 查看命令:docker info | grep "Storage Driver"查看存储驱动;mount可以看到 overlay2 挂载信息。

三、Namespace 命名空间详解

  1. 作用:内核级隔离手段,把系统资源划分到不同命名空间,不同命名空间进程互相看不见。
  2. 主要隔离类型:PID、NET 网络、MNT 挂载、UTS 主机名、USER 用户、IPC 进程通信。
  3. 查看:宿主机ls -l /proc/<pid>/ns可以查看一个进程的各个命名空间;容器拥有独立的 ns。
  4. 注意:Namespace 只做隔离,不限制资源用量,资源限制交给 CGroup 完成。

四、Docker Bridge 网络模式(默认网络)

  1. 组件:虚拟网桥docker0;每一个容器一对veth‑pair虚拟网卡,一端在容器 netns,一端挂接 docker0 网桥。
  2. 三种流量转发流程
    1. 容器之间互通(同一网桥):数据包直接走 docker0 网桥转发,不经过宿主机物理网卡;宿主机也可以直接访问容器内网 IP。
    2. 容器访问外网:iptables POSTROUTING 链执行MASQUERADE源地址伪装 SNAT,将容器内网 IP 替换成宿主机网卡 IP 向外发包。
    3. 外部访问容器(端口映射‑p):外部流量到宿主机,iptables PREROUTING 链执行DNAT,把宿主机端口转换为容器内部 IP + 端口,经由 docker0 网桥交给目标容器。
  3. 底层依靠 iptables NAT 规则完成地址转换。

五、镜像与容器简单补充

  1. 镜像:多层只读文件,静态模板;容器:镜像运行起来的实例,拥有一层可写层。
  2. Dockerfile 可以构建自定义镜像,每一条指令生成镜像一层。

六、易考简答浓缩

  1. 容器本质:隔离 + 资源限制的进程,复用宿主机内核。
  2. 三大技术:Namespace 做隔离;CGroup 做资源限制;UnionFS (overlay2) 做分层文件系统。
  3. Bridge 网络三场景:容器间互通走网桥;容器出网 MASQUERADE;外部访问容器 DNAT 端口映射。
  4. 容器和虚拟机最大区别:容器共享内核,轻量;虚拟机有独立完整操作系统,重、隔离更强。
  5. runc 底层干活,containerd 做高层管理;dockerd 是 docker 守护进程。
http://www.jsqmd.com/news/1336688/

相关文章:

  • 用 LVGL 给 UEFI Setup 换一套图形界面:架构、实现与 QEMU 验证
  • BilibiliDown 终极指南:如何快速下载B站视频的完整教程
  • 【重磅】NVIDIA CMP 170HX 矿卡解锁:8GB→64GB、算力接近「真 A100」完整教程(含验证)
  • 三极管工作原理与共射极放大电路设计:从非线性特性到稳定偏置
  • KKCE: 基于 ETag 指纹碰撞与条件请求的网站测速缓存一致性审计-快快测
  • Python工作流引擎SpiffWorkflow完全指南:从入门到精通掌握BPMN流程自动化
  • 北京靠谱的旅游包车机构哪家强?本地老司机推荐 - 品牌优推
  • 电力系统碳排放优化调度模型设计与实践
  • CAD三维建模零基础入门:从软件选择到核心建模流程全解析
  • Java逻辑运算符深度解析:从短路求值到优先级陷阱与实战避坑
  • QTableWidget 实战:自动换行且行高自适应的完整方案
  • 学术研究者的高效翻译助手:Zotero PDF2zh插件完全指南
  • AUTOSAR架构如何实现汽车嵌入式软件代码复用:从分层设计到工程实践
  • 3步搞定微信公众号数据采集:Python爬虫实战指南
  • FastLED电源管理实战指南:高效控制LED电流的7大关键策略
  • 深度学习在智能交通系统中的应用与实践
  • 机动目标跟踪:Singer与当前统计模型原理及MATLAB仿真实践
  • 2026年广州潮汕肠粉加盟企业怎么选择?看实利更重要 - 品牌优推
  • 国内开发者合规访问主流AI大模型(Gemini/ChatGPT/Claude/Grok)实战指南
  • 3分钟学会AI全自动短视频制作:Pixelle-Video让你轻松成为内容创作者
  • 从原子钟到厘米级定位:GPS时间系统与高精度定位技术全解析
  • codex必用10大视频skill,从0到1做爆款
  • 链上套利残酷共学-DAY01
  • 臃肿工具箱里的“无用之重”
  • KKCE: 基于 BGP 路由收敛与 AS Path 预热的网站测速冷启动优化-快快测
  • 从手写 Hash 路由到 React Router:一个路由练习的关键实现
  • 74. 搜索二维矩阵:把二维结构映射成一维后做二分
  • ENVI 5.6安装与配置全攻略:从系统环境到性能优化的遥感数据处理基石
  • 如何轻松捕获网页视频:猫抓浏览器扩展终极使用指南
  • tchMaterial-parser架构解析:国家中小学智慧教育平台电子课本下载技术实现深度指南