微认证「云原生基础设施之容器入门」学习实录:容器知识笔记与易错点整理
本文是华为云开发者学堂微认证「云原生基础设施之容器入门」的学习实录与知识整理,记录课程中的核心概念、关键知识点与易错点,便于复习备查。
一、为什么学这门微认证
容器是云原生基础设施的基石。学习这门微认证,一是系统梳理容器技术体系(概念—运行时—镜像—仓库),二是为后续学习云容器引擎 CCE 等云服务打基础。课程体量不大,适合作为云原生入门的第一课。
二、容器基础概念
容器是什么:一种操作系统层面的轻量级虚拟化技术,本质是在共享宿主机内核的前提下,为应用进程提供隔离的运行环境。
容器 vs 虚拟机:
| 对比项 | 容器 | 虚拟机 |
|---|---|---|
| 虚拟化层级 | 操作系统层 | 硬件层 |
| 是否含完整 Guest OS | 否,共享宿主机内核 | 是 |
| 启动速度 | 秒级 | 分钟级 |
| 资源开销 | 小 | 大 |
| 隔离强度 | 弱于虚拟机 | 强 |
容器的三大核心技术:
- Namespace(命名空间):实现资源隔离,包括 PID、NET、MNT、UTS、IPC、USER 六类,让容器内的进程“看不见”宿主机及其他容器的资源。
- Cgroups(控制组):对 CPU、内存、磁盘 IO 等资源做限制、配额与统计,防止单个容器耗尽宿主机资源。
- UnionFS(联合文件系统):把多个目录层叠挂载为一个统一视图,是镜像分层存储的技术基础。
易错点:Namespace 负责“隔离”,Cgroups 负责“限额”,两者职责常被混淆;容器因为共享内核,隔离性天然弱于虚拟机。
三、Docker 与容器运行时
Docker 架构:Client(docker 命令行)→ Docker Daemon(dockerd)→ containerd → runc,逐层下发,最终由 runc 依据 OCI 规范创建容器进程。
容器运行时分层:
- 高层运行时 containerd:负责镜像拉取与管理、容器生命周期管理,对接上层编排。
- 低层运行时 runc:真正创建并运行容器进程的工具。
OCI 开放容器标准:包含镜像规范(Image Spec)与运行时规范(Runtime Spec),保证不同厂商工具链之间的互操作性。
易错点:
- Docker 不是唯一的容器运行时;Kubernetes 在 1.24 版本后移除了 dockershim,默认使用 containerd 作为容器运行时。
docker命令只是客户端,真正干活的是后台的 dockerd 与 containerd。
四、镜像与仓库
镜像:容器的只读模板,由多层只读文件层叠加而成;每一条 Dockerfile 指令都会产生一个新的镜像层。
写时复制(Copy-on-Write):容器启动时在镜像层之上叠加一个可写层,容器内的写操作只发生在可写层,底层镜像保持不变。
Dockerfile 常用指令:
FROM:指定基础镜像RUN:构建时执行命令COPY/ADD:复制文件进镜像(ADD 支持解压与远程 URL)WORKDIR:设置工作目录EXPOSE:声明容器监听端口(仅声明,不自动映射)ENV:设置环境变量CMD/ENTRYPOINT:容器启动时执行的命令
镜像仓库:集中存储与分发镜像的服务,分为公有仓库与私有仓库;华为云的容器镜像服务 SWR 即属此类。
易错点:
CMD会被docker run后面的参数覆盖,ENTRYPOINT则不会——这是最经典的考点。- 容器删除后,可写层的数据会一并丢失;需要持久化的数据一定要用 Volume 或挂载宿主机目录。
- 端口映射
-p 宿主机端口:容器端口,顺序写反是新手常见错误。 - 构建镜像时尽量合并
RUN指令,减少镜像层数,减小镜像体积。
五、学习总结
这门微认证把“容器是什么、怎么运行、镜像如何构建与分发”讲成了一个完整闭环。核心记忆点可以收敛为一句话:Namespace 做隔离,Cgroups 做限额,UnionFS 做分层,OCI 做标准,Dockerfile 做镜像。后续计划结合官方文档再动手实践一遍,把这些概念真正落到操作上。
- 点赞
- 收藏
- 关注作者
评论(0)