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

Docker 入门教程(二):Docker 的基本原理

文章目录

  • 🐳 Docker 入门教程(二):Docker 的基本原理
    • 1. Docker 架构总览:三大核心角色
    • 2. 镜像与容器的关系
    • 3. 容器启动流程:`docker run` 背后发生了什么?

🐳 Docker 入门教程(二):Docker 的基本原理

在学习镜像与容器的命令操作之前,我们必须弄清楚:Docker 是如何运作的?容器和镜像到底是什么关系?docker run 背后到底做了什么?
这一节我们通过结构图 + 原理分析,建立起对 Docker 系统性理解的底层认知。


1. Docker 架构总览:三大核心角色

Docker 采用经典的客户端 - 服务端架构(C/S 架构),它主要由以下三部分组成:

在这里插入图片描述

1.1 Client(客户端)

客户端就是我们日常使用的命令行工具,例如:

docker build
docker pull
docker run

这些命令本质上不会直接操作容器或镜像,而是通过 HTTP API 请求把意图发送给 Docker 服务端。

1.2 Docker Daemon(服务端)

也称为 dockerd,是 Docker 的守护进程,负责实际执行一切命令,包括:

  • 拉取镜像
  • 构建镜像
  • 创建 / 启动容器
  • 管理网络、挂载、资源等

它同时维护两个最核心的资源:

  • Images(镜像):只读模板,用于创建容器
  • Containers(容器):基于镜像运行出来的隔离进程

1.3 Registry(镜像仓库)

这是 Docker 镜像的集中分发平台,默认是 Docker Hub,也可以是私有仓库(如 Harbor)。

Docker Daemon 会在执行 docker pulldocker run 时自动从 Registry 拉取镜像。


图解架构流程

+---------+           HTTP API         +-------------------------+
|  Client | ─────────────▶──────────▶ |     Docker Daemon       |
|         |                            | (dockerd)               |
| docker  |                            |                         |
| build   |                            |   +------------+        |
| pull    |                            |   |  Images    |◀───────┐
| run     |                            |   +------------+        |
+---------+                            |   | Containers |        ||   +------------+        |+-------------------------+▲│pull/push│+-------------------------------+|           Registry            ||     (Docker Hub or custom)   |+-------------------------------+

2. 镜像与容器的关系

Docker 中,镜像(Image)和容器(Container)的关系可以从两个角度来类比理解:

类比一:类 vs 实例

  • 镜像 就像一个类(Class)
    它定义了对象的结构、行为和属性,但不能直接运行。

  • 容器 就是类创建出来的实例(Instance)
    每个容器基于镜像创建,可以独立运行、修改、销毁,彼此互不影响。

类比二:安装包 vs 软件

  • 镜像 像是一个软件安装包,里面包含程序代码和运行环境。它本身是静态的、不能直接运行。

  • 容器 就是你在电脑上安装并运行起来的软件,它有自己的配置、运行数据和状态。你可以同时运行多个程序实例,它们都来源于同一个安装包。


3. 容器启动流程:docker run 背后发生了什么?

当你运行:

docker run redis

Docker 表面上只做了一件事:运行了一个 Redis 容器。
但实际上,它在背后做了一系列工作,整个过程可以拆成几个简单的步骤:

第一步:找镜像

Docker 会先检查你本地有没有 redis 镜像。

  • 有就直接用
  • 没有就从 Docker Hub 下载

第二步:创建容器

基于镜像,Docker 创建一个容器。就像“解压安装包、准备好环境”。

这一步会:准备一个独立的运行环境p;分配一个容器 ID;设置网络和存储

第三步:启动容器

Docker 会执行容器里的默认启动命令(比如 Redis 的服务器进程),让它真正“跑起来”。

此时容器就进入了运行状态(Running)。

第四步:资源隔离 & 控制(Docker 背后自动做的)

虽然我们看不见,但 Docker 还会在后台做几件重要的事:

  • 资源隔离:让容器拥有自己独立的文件系统、网络、进程空间等
  • 资源限制:防止某个容器用光 CPU 或内存
  • 文件系统挂载:用一种叫 Overlay 的方式叠加镜像和容器的文件系统,便于读写分离
http://www.lryc.cn/news/575499.html

相关文章:

  • Java基础知识(十一)GUI图形用户界面设计
  • iOS App 上架流程工具链解析:开发者视角下的协作实践总结
  • ubuntu 远程桌面 xrdp + frp
  • AI in CSR Writing: Revolutionizing Clinical Trial Reports
  • 专题:2025中国游戏科技发展研究报告|附130+份报告PDF、原数据表汇总下载
  • Linux命令与脚本:高效系统管理的双刃剑
  • 记dwz(JUI)前端框架使用之--服务端响应提示框
  • Llama 3 + Qwen2双模型实战:单张3090构建企业级多模态知识库(2025精解版)
  • MyBatis深度面试指南
  • 【PX4-AutoPilot教程-TIPS】PX4系统命令行控制台ConsolesShells常用命令(持续更新)
  • 2025Q1东南亚移动游戏:休闲游戏主导下载,本地化是出海重要战略!
  • Unified、Remark 和Rehype 是 JavaScript 生态中用于处理结构化文本(如 Markdown 和 HTML)的核心工具
  • UDP 和 TCP 可以同时使用相同的端口号
  • 创客匠人解析视频号公私域互通逻辑:知识变现的破圈与沉淀之道
  • Vue-15-前端框架Vue之应用基础编程式路由导航
  • MR30分布式IO:产线改造省时 70%
  • 七天学会SpringCloud分布式微服务——03——一些细节的心得感悟(续)
  • FANUC机器人教程:用户坐标系标定及其使用方法
  • 腾讯混元API调用优化实战:用API网关实现流量控制+缓存+监控
  • 向量数据库milvus中文全文检索取不到数据的处理办法
  • SQL学习笔记3
  • recipes的版本比较老如何更新到新版本?
  • Twitter外贸精准获客全景策略(2025实战版)
  • dlib检测视频中的人脸并裁剪为图片保存
  • 【C#】 DevExpress.XtraEditors.SidePanel
  • OSEK/VDX OS ISO17356-3,【2】OS架构概述
  • 《大模型 Agent 应用实战指南》第4章:核心 Agent 设计与提示工程
  • 热点代码探测确定何时JIT
  • 【STM32】[特殊字符] WWDG(窗口看门狗)学习笔记
  • ESP32 VSCODE进入menuconfig时ESP-IDF idf.py menuconfig卡进度条,setuptools版本太高解决方法