> [!info] 章节导航
> [[docker学习路径|Docker 学习索引]] · [[02-核心概念与 Docker Objects|下一章]]

## 1. 认识 Docker

### 1.1 什么是 Docker

Docker 使您能够将应用程序与基础架构分离，从而快速交付软件。借助 Docker，您可以像管理应用程序一样管理基础架构。通过利用 Docker 的代码发布、测试和部署方法，您可以显著缩短从编写代码到在生产环境中运行代码之间的延迟。

Docker 提供了在松散隔离的环境中（称为容器）打包和运行应用程序的功能。这种隔离性和安全性使您可以在给定主机上同时运行多个容器。容器是轻量级的，包含运行应用程序所需的一切，因此您无需依赖主机上安装的内容。您可以在工作时共享容器，并确保与您共享的每个人都能获得相同的容器并以相同的方式工作。

Docker 提供了工具和平台来管理容器的生命周期：

- 使用容器开发您的应用程序及其支持组件。
- 容器成为分发和测试应用程序的单元。
- 
  准备就绪后，将应用程序以容器或编排服务的形式部署到生产环境中。无论您的生产环境是本地数据中心、云提供商还是两者的混合环境，操作都相同。



### 1.2 Docker 能做什么？

#### 快速、一致地交付应用程序


Docker 允许开发人员在标准化环境中使用提供应用程序和服务的本地容器工作，从而简化开发生命周期。容器非常适合持续集成和持续交付 (CI/CD) 工作流。

- 您的开发人员在本地编写代码并使用 Docker 容器与同事共享他们的工作。
- 他们使用 Docker 将他们的应用程序推送到测试环境并运行自动和手动测试。
- 
  当开发人员发现错误时，他们可以在开发环境中修复它们，然后重新部署到测试环境进行测试和验证。
- 测试完成后，向客户提供修复就像将更新后的图像推送到生产环境一样简单。



### 1.3 Docker 架构

Docker 采用客户端-服务器架构。Docker 客户端与 Docker 守护进程通信，后者负责构建、运行和分发 Docker 容器等繁重工作。Docker 客户端和守护进程可以运行在同一系统上，或者您可以将 Docker 客户端连接到远程 Docker 守护进程。Docker 客户端和守护进程使用 REST API、UNIX 套接字或网络接口进行通信。另一个 Docker 客户端是 Docker Compose，它允许您处理由一组容器组成的应用程序。



<img src="https://chenalna.oss-cn-hangzhou.aliyuncs.com/img/image-20251015230017362.png" alt="image-20251015230017362" style="zoom:50%;" />

Docker 守护进程 ( `dockerd` ) 监听 Docker API 请求并管理 Docker 对象，例如镜像、容器、网络和卷。守护进程还可以与其他守护进程通信以管理 Docker 服务。

Docker 客户端 ( `docker` ) 是许多 Docker 用户与 Docker 交互的主要方式。当您使用诸如 `docker run` 类的命令时，客户端会将这些命令发送到 `dockerd` ，由后者执行。 `docker` 命令使用 Docker API。Docker 客户端可以与多个守护进程通信。

#### Docker Registry

Docker 镜像仓库用于存储 Docker 镜像。Docker Hub 是一个任何人都可以使用的公共镜像仓库，Docker 默认会在 Docker Hub 上查找镜像。您甚至可以运行自己的私有镜像仓库。

使用 `docker pull` 或 `docker run` 命令时，Docker 会从您配置的注册表中提取所需的镜像。使用 `docker push` 命令时，Docker 会将镜像推送到您配置的注册表。
