news 2026/6/23 16:28:34

2.1 容器技术革命:为什么Docker能替代虚拟机?深度解析Namespace和Cgroup

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
2.1 容器技术革命:为什么Docker能替代虚拟机?深度解析Namespace和Cgroup

2.1 容器技术革命:为什么Docker能替代虚拟机?深度解析Namespace和Cgroup

引言

容器技术正在改变软件开发和部署的方式。Docker作为容器技术的代表,为什么能够替代传统的虚拟机?本文将深入解析容器技术的底层原理,特别是Namespace和Cgroup机制,帮助你理解容器技术的本质。

一、容器 vs 虚拟机

1.1 架构对比

虚拟机架构:

┌─────────────────────────────────────┐ │ 应用程序 │ ├─────────────────────────────────────┤ │ Guest OS │ ├─────────────────────────────────────┤ │ Hypervisor │ ├─────────────────────────────────────┤ │ Host OS │ ├─────────────────────────────────────┤ │ 硬件 │ └─────────────────────────────────────┘

容器架构:

┌─────────────────────────────────────┐ │ 容器1 容器2 容器3 │ ├─────────────────────────────────────┤ │ Container Runtime │ ├─────────────────────────────────────┤ │ Host OS │ ├─────────────────────────────────────┤ │ 硬件 │ └─────────────────────────────────────┘

1.2 性能对比

特性虚拟机容器
启动时间分钟级秒级
资源占用高(需要完整OS)低(共享OS)
性能损耗5-15%1-3%
隔离性中等
可移植性中等

二、Linux Namespace

2.1 Namespace概述

Namespace是Linux内核提供的资源隔离机制,让进程拥有独立的系统视图。

2.2 六种Namespace类型

2.2.1 PID Namespace

进程ID隔离,每个容器有独立的进程树。

# 查看当前进程的PID Namespacels-l /proc/self/ns/pid# 创建新的PID Namespaceunshare --pid --fork /bin/bash
2.2.2 Network Namespace

网络隔离,每个容器有独立的网络栈。

# 创建Network Namespaceipnetnsaddtest-ns# 在Namespace中执行命令ipnetnsexectest-nsipaddr# 创建veth对连接两个Namespaceiplinkaddveth0typeveth peer name veth1iplinksetveth1 netns test-ns
2.2.3 Mount Namespace

文件系统隔离,每个容器有独立的挂载点。

# 创建Mount Namespaceunshare --mount --fork /bin/bash# 挂载文件系统mount-t tmpfs tmpfs /tmp
2.2.4 UTS Namespace

主机名和域名隔离。

# 创建UTS Namespace并修改主机名unshare --uts --fork /bin/bashhostnamecontainer-host
2.2.5 IPC Namespace

进程间通信隔离。

# 创建IPC Namespaceunshare --ipc --fork /bin/bash
2.2.6 User Namespace

用户和组ID隔离。

# 创建User Namespaceunshare --user --fork /bin/bash

2.3 实战:手动创建容器

#!/bin/bash# 创建一个简单的容器环境# 创建新的Namespaceunshare --pid --mount --net --uts --ipc --user --fork --mount-proc /bin/bash<<EOF # 设置主机名 hostname mycontainer # 挂载proc文件系统 mount -t proc proc /proc # 设置网络 ip link set lo up # 运行命令 ps aux hostname EOF

三、Linux Cgroup

3.1 Cgroup概述

Cgroup(Control Groups)用于限制和监控进程组的资源使用。

3.2 Cgroup v1子系统

3.2.1 CPU子系统

限制CPU使用。

# 创建CPU cgroupmkdir-p /sys/fs/cgroup/cpu/mycontainerecho50000>/sys/fs/cgroup/cpu/mycontainer/cpu.cfs_quota_usecho100000>/sys/fs/cgroup/cpu/mycontainer/cpu.cfs_period_us# 将进程加入cgroupecho$$>/sys/fs/cgroup/cpu/mycontainer/cgroup.procs
3.2.2 Memory子系统

限制内存使用。

# 创建Memory cgroupmkdir-p /sys/fs/cgroup/memory/mycontainerecho100M>/sys/fs/cgroup/memory/mycontainer/memory.limit_in_bytes# 将进程加入cgroupecho$$>/sys/fs/cgroup/memory/mycontainer/cgroup.procs
3.2.3 BlkIO子系统

限制块设备IO。

# 创建BlkIO cgroupmkdir-p /sys/fs/cgroup/blkio/mycontainerecho"8:0 1048576">/sys/fs/cgroup/blkio/mycontainer/blkio.throttle.read_bps_device# 将进程加入cgroupecho$$>/sys/fs/cgroup/blkio/mycontainer/cgroup.procs

3.3 Cgroup v2

Cgroup v2是新的统一层次结构:

# 挂载cgroup2
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/13 15:46:38

个人文件管理与多平台整合:AList开源解决方案全攻略

个人文件管理与多平台整合&#xff1a;AList开源解决方案全攻略 【免费下载链接】alist 项目地址: https://gitcode.com/gh_mirrors/alis/alist 在数字化时代&#xff0c;我们的文件散落在本地硬盘、各类云存储平台和移动设备中&#xff0c;多平台文件统一管理成为提升…

作者头像 李华
网站建设 2026/6/18 18:07:50

医疗培训新方式,Live Avatar构建虚拟医生模拟器

医疗培训新方式&#xff0c;Live Avatar构建虚拟医生模拟器 在传统医疗培训中&#xff0c;医学生需要反复练习问诊、沟通和临床决策&#xff0c;但真实患者资源有限&#xff0c;标准化病人成本高昂&#xff0c;而录播教学又缺乏互动性。Live Avatar作为阿里联合高校开源的数字…

作者头像 李华
网站建设 2026/6/23 0:29:49

1.12 Go HTTP服务器进阶:路由、中间件、错误处理完整实现

1.12 Go HTTP服务器进阶:路由、中间件、错误处理完整实现 引言 构建生产级的HTTP服务器需要路由管理、中间件机制和统一的错误处理。本文将深入讲解这些进阶功能,帮助你构建健壮的HTTP服务器。 一、路由管理 1.1 自定义路由器 package mainimport ("fmt""…

作者头像 李华
网站建设 2026/6/13 8:55:21

亲测有效:BSHM镜像实现精准人体分割

亲测有效&#xff1a;BSHM镜像实现精准人体分割 你是否遇到过这样的问题&#xff1a;想快速把人像从复杂背景中干净地抠出来&#xff0c;但用传统工具要花十几分钟调边缘、修发丝&#xff0c;用在线服务又担心隐私泄露、处理效果不稳定&#xff1f;最近我试了CSDN星图上的BSHM…

作者头像 李华
网站建设 2026/6/22 21:25:54

如何让GIMP秒变Photoshop?开源图像工具实现零成本界面迁移

如何让GIMP秒变Photoshop&#xff1f;开源图像工具实现零成本界面迁移 【免费下载链接】PhotoGIMP A Patch for GIMP 2.10 for Photoshop Users 项目地址: https://gitcode.com/gh_mirrors/ph/PhotoGIMP PhotoGIMP是一款专为Photoshop用户设计的开源图像工具&#xff0c…

作者头像 李华
网站建设 2026/6/22 21:27:12

基于SpringBoot+大数据Hadoop的的食物营养成分分析系统的设计与实现(精品源码+精品论文+上万数据集+答辩PPT)

博主介绍&#xff1a;CSDN毕设辅导第一人、靠谱第一人、全网粉丝50W,csdn特邀作者、博客专家、腾讯云社区合作讲师、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交…

作者头像 李华