Docker 入门|吃透容器生态与底层原理

Docker 入门学习|搞懂容器生态与基础原理

✨摘要:很多同学上手 Docker 就敲命令,结果越学越混乱。本篇笔记从容器生态全景入手,理清容器各个组件,再搞懂容器是什么、为什么要用容器,对比容器与虚拟机差异,拆解 Docker C/S 架构。适合运维、云计算初学者,看完建立容器全局认知,为后续镜像、容器实操打下理论基础。


前言

初学 Docker,不建议上来就死记命令。 如果连整个容器领域有哪些技术、组件分别干什么都分不清,敲再多实操命令,遇到问题依旧一头雾水。

今天整理教案前两章学习笔记,先鸟瞰容器整个生态,再搞懂容器的What / Why / How,把底层逻辑捋顺,再动手做实验,学习效率会高很多。

一、容器生态系统

容器技术继大数据、云计算之后,已经成为 IT 行业必备技能。Docker 的出现把容器真正推向大规模生产使用。

整个容器生态可以划分为容器核心技术、容器平台技术、容器支持技术三大板块。

🔧 容器核心技术:让容器在单机跑起来

核心技术解决的问题:在单台宿主机上,容器如何能够正常运行。

  1. OCI 开放容器规范 OCI 是由 Docker、Google、CoreOS 等厂商共同成立的组织,制定两套标准:运行时规范、镜像格式规范。 有了统一规范,不同厂商的容器镜像可以互相运行,保证镜像的可移植性。像 docker、podman、rkt、containerd 都遵循 OCI 规范。
  2. 容器 Runtime(运行时) Runtime 和 Linux 内核深度交互,给容器提供运行环境,类比 Java 里面的 JVM。
  • lxc:老牌 Linux 容器运行时,Docker 早期底层依赖它
  • runc:Docker 自研,符合 OCI 标准,现在 Docker 默认 runtime
  • rkt:CoreOS 出品,兼容 Docker 镜像
  1. 容器管理工具 Runtime 只负责底层运行,管理工具对外提供 CLI 交互,供人操作容器。
  • lxc → lxd
  • runc → docker engine(就是我们平时说的 Docker,包含后台 daemon 守护进程 + cli 命令行)
  • rkt → rkt cli
  1. 容器定义工具 用来定义容器内容、属性,实现镜像保存、分享、重建。
  • docker image:Docker 的容器模板
  • Dockerfile:文本脚本,自动化构建镜像
  • ACI:rkt 使用的镜像格式
  1. Registries 镜像仓库 专门存放镜像的仓库,是镜像分发的载体。
  • Docker Registry:可自建私有镜像仓库
  • Docker Hub:全球最大的公共镜像仓库
  • Quay.io:知名公共托管仓库
  1. 容器 OS 专门为容器场景裁剪的操作系统,体积小、启动速度快。 代表系统:CoreOS、atomic、ubuntu‑core。

☁️ 容器平台技术:实现多机器集群能力

核心技术只能搞定单台服务器;平台技术面向分布式集群,应对微服务大规模部署场景。

  1. 容器编排引擎 微服务架构下,成百上千个容器会动态创建、销毁、迁移。编排引擎负责集群调度、容器管理、服务发现。 主流产品:
  • Docker Swarm:Docker 官方编排方案
  • Kubernetes (K8s):谷歌开源,目前行业事实标准
  • Mesos+Marathon:通用资源调度平台
  1. 容器管理平台 封装编排引擎底层细节,提供 WebUI、一键部署、应用目录,降低使用门槛。 代表:Rancher、ContainerShip
  2. 基于容器的 PaaS 面向开发人员,屏蔽底层基础设施,开发者只需要专注业务代码。 代表:Deis、Flynn、Dokku

🛠️ 容器支持技术:集群配套能力

属于生态的配套组件,保障容器集群稳定运行。

  • 容器网络:解决容器之间、容器与外部网络连通隔离。方案:docker 原生 network、flannel、weave、calico
  • 服务发现:容器 IP 会动态变化,服务发现让客户端能够找到服务;工具:etcd、consul、zookeeper
  • 监控:采集容器 CPU、内存状态;docker 自带 ps/top/stats、sysdig、cAdvisor、Weave Scope
  • 数据管理:解决容器跨主机迁移时持久化数据
  • 日志管理 :收集容器运行日志,docker logs、logspout
  • 安全:镜像漏洞扫描工具 Open SCAP

💻 实验实操小结(CentOS Stream8)

  1. 克隆虚拟机模板,配置静态 IP,配置阿里云 Docker YUM 源

  2. 安装 docker‑ce,设置开机自启

    systemctl enable docker.service --now

  3. 配置镜像加速器(阿里云 / 华为云 SWR) 修改/etc/docker/daemon.json写入镜像加速地址,重载配置重启 docker,执行docker info确认加速器配置生效。

  4. 第一个容器测试

    docker run hello-world

执行逻辑:本地无镜像 → 远程仓库拉取镜像 → 创建并运行容器输出信息。

  1. 运行 httpd Web 容器

    docker run -d -p 80:80 httpd

浏览器访问宿主机 IP,看到It works!即代表 Web 容器正常。

Docker C/S 分离实验

Docker 本身就是 C/S 架构:客户端只发指令,服务端真正管理容器与镜像。

  • Server 服务端:192.168.108.30,修改 docker.service 开启 2375 远程监听端口
  • Client 客户端:192.168.108.31,仅安装 docker‑ce‑cli 客户端,不部署完整 Docker 服务

客户端远程操作服务端示例:

复制代码
docker -H 192.168.108.30 run hello-world

⚠️重点:镜像、容器全部保存在 Server 服务端,Client 仅仅发送控制命令。


二、容器 What Why How,读懂容器本质

📜容器发展简史

容器不是 Docker 发明的,它是 Linux 内核技术多年迭代的产物。

  1. 1979 chroot jail:最早实现进程根目录隔离
  2. FreeBSD Jail、Solaris Zones:完善操作系统级隔离
  3. cgroups:谷歌提出,实现进程 CPU / 内存资源限制,合并进 Linux 内核
  4. LXC:第一个完整 Linux 容器管理器,基于 namespace + cgroups
  5. 2013 Docker 诞生:优化用户体验,后期替换底层为 runc/libcontainer
  6. OCI 规范诞生,容器行业走向标准化

🤔 What:到底什么是容器?

容器是一种轻量级、可移植、自包含的软件打包技术 。 把应用程序 + 全部依赖库打包,一份包可以在开发电脑、测试服务器、物理机、公有云上面不加修改直接运行。

容器运行在宿主机的用户空间,本质上是一组被内核隔离的进程,共享宿主机 Linux 内核

🆚容器 VS 虚拟机对比

很多初学者会把容器和虚拟机搞混,两者底层实现完全不一样。

表格

对比维度 虚拟机 Docker 容器
内核 拥有独立完整内核,依赖 Hypervisor 虚拟化 共享宿主机 Host 内核
启动速度 分钟级 秒级甚至毫秒级启动
隔离级别 硬件级强隔离 进程级别隔离(Namespace + Cgroups)
资源开销 开销大,每台虚拟机完整操作系统 开销极小,只是宿主机普通进程
单机可运行数量 几十台 单机支持上千容器
磁盘占用 GB 级别 MB 级别
镜像特点 完整操作系统镜像 分层只读镜像
适用场景 需要不同内核、强硬件隔离场景 微服务、DevOps、环境一致性交付

一句话理解差异:虚拟机是虚拟一整套硬件;容器只是隔离进程,复用宿主机内核。

❓ Why 为什么我们需要容器?

传统开发运维的巨大痛点: 现在业务系统大量微服务化,一套系统包含数据库、缓存、消息队列等众多组件。 同时部署环境五花八门:开发本机、QA 测试环境、私有机房、公有云。

于是形成一个恐怖矩阵:N个服务 × M套环境。经常出现 "本地电脑可以跑,线上环境就报错",环境差异问题消耗大量人力。

💡现实世界的启发:集装箱 过去各类货物运输,装卸转运成本极高;集装箱统一标准,不管里面装什么货物,卡车、火车、轮船都可以统一搬运。

Docker 借鉴集装箱的思想:把应用连同所有依赖打包成 "软件集装箱"。

  • 👨‍💻开发者:Build Once,Run Anywhere。一次构建,到处运行。开发环境打包,测试、生产直接复用,消除环境差异。
  • 👷运维:Configure Once,Run Anything。维护一套标准运行环境,各类业务容器直接运行,部署可复现。

🛠️ How:Docker 架构如何工作?

Docker 是典型的C/S 客户端‑服务端架构

  1. Docker Client(客户端) :我们敲的docker命令,是交互入口,可以本地,也可以远程连接服务端。
  2. Docker Daemon(dockerd 守护进程):后台服务,真正干活。管理镜像、容器、网络、存储卷,接收 REST API 请求完成各类操作。
  3. Registry 镜像仓库:存放镜像,用于镜像分发,Docker Hub 为公共仓库,企业可以搭建私有仓库。
  4. Image 镜像只读模板,是创建容器的原材料。
  5. Container 容器:镜像运行后的实例,拥有可读写层。
docker run 完整流程
  1. 用户在客户端执行 docker run
  2. Client 发送 API 请求给到 dockerd 守护进程
  3. daemon 检查本地是否存在需要的镜像
  4. 本地没有镜像,则去 Registry 拉取镜像保存本地
  5. 在只读镜像之上叠加可读写容器层,启动应用程序。

📌三大核心概念通俗记忆

  • 镜像 (image):软件只读安装包(ISO)
  • 容器 (container):镜像启动后的运行实例(开机运行的系统)
  • 仓库 (registry):镜像下载存放平台(软件商店)

✨本章小结

通过前两章的学习,我们不再只停留在敲命令层面。

  1. 容器生态分为核心、平台、支持技术,清楚 OCI、runtime、编排引擎等组件各自定位;
  2. 容器本质不是虚拟机,是 Linux 内核 Namespace+Cgroups 实现的隔离进程,共享宿主机内核;
  3. Docker 采用 C/S 架构,分清客户端与守护进程职责,理解镜像、容器、仓库三者关系。

后续预告:下一章学习 Docker 镜像分层原理,Dockerfile 编写与镜像构建实操。

相关推荐
吴声子夜歌3 小时前
Shell编程——函数
linux·运维·shell
PC2005-cloud3 小时前
Qdrant 连接失败排查:localhost 解析到 __1,而 Docker 只绑了 IPv4
运维·docker·容器
电子制造自留地3 小时前
AI服务器PCB的超低损耗材料选型逻辑
运维·服务器·人工智能·科技·制造·科普·pcb工艺
喵喵爱自由4 小时前
Deepseek Harness镜像离线部署
docker·ai·语言模型
一技安身4 小时前
【信创】Ollama 手动提取 deepseek-r1:1.5b模型迁移到内网机器
服务器·docker·语言模型
蓝速科技4 小时前
会议室门牌触控预约选型与落地实战指南丨蓝速科技
大数据·运维·数据库·人工智能·科技
程序员老赵4 小时前
Docker 部署觅思文档:搭建私有化文档管理系统
docker·开源·笔记测评
PatrickYao04224 小时前
Linux安装UV
linux·运维·uv
蓝速科技4 小时前
企业展厅数字人导览效果提升与选型实战指南丨蓝速科技
大数据·运维·数据库·人工智能·科技·microsoft
顶点多余4 小时前
面试题总结 ---Linux篇
linux·运维·服务器