Docker 的架构

Docker 采用客户端-服务器架构。Docker 客户端与 Docker 守护进程通信,后者负责构建、运行和分发 Docker 容器。Docker 客户端与守护进程在同一系统上运行,或者我们可以将 Docker 客户端与 Docker 守护进程远程连接。借助 UNIX 套接字或网络上的 REST API,Docker 客户端和守护进程可以相互交互。

Docker 的架构

什么是 Docker Daemon?

Docker 守护进程通过与其他守护进程通信来管理所有服务。它借助 Docker 的 API 请求来管理 Docker 对象,例如镜像、容器、网络和卷。

Docker 客户端

借助 Docker 客户端,Docker 用户可以与 Docker 进行交互。Docker 命令使用 Docker API。Docker 客户端可以与多个守护进程通信。当 Docker 客户端在 Docker 终端上运行任何 Docker 命令时,终端都会向守护进程发送指令。Docker 守护进程会以命令和 REST API 请求的形式从 Docker 客户端获取这些指令。

Docker 客户端的主要目标是提供一种方式,用于从 Docker 镜像仓库中拉取镜像并在 Docker 主机上运行它们。客户端常用的命令包括docker build、docker pulldocker run

Docker Host

Docker 主机是一种负责运行多个容器的机器。它由 Docker 守护进程、镜像、容器、网络和存储组成。

Docker registry

所有 Docker 镜像都存储在 Docker 镜像仓库 (docker registry) 中。Docker 有一个公共镜像仓库,称为Docker Hub,任何人都可以使用。我们也可以运行自己的私有镜像仓库。使用docker rundocker pull命令,我们可以从已配置的镜像仓库中提取所需的镜像。使用docker push命令,镜像将被推送到已配置的镜像仓库中。

Docker 对象

每当我们使用 docker 时,我们都会创建并使用镜像、容器、卷、网络和其他对象。现在,我们将讨论 docker 对象:

Docker 对象

Docker 镜像

镜像包含创建 Docker 容器的指令。它只是一个只读模板,用于存储和交付应用程序。镜像是使用 Docker 技术的整体体验的重要组成部分,因为它们能够以任何以前不可能实现的方式实现开发人员之间的协作。

Docker 容器

容器是由 Docker 镜像创建的,它们是现成的应用程序。借助 Docker API 或 CLI,我们可以启动、停止、删除或移动容器。容器只能访问镜像中定义的资源,除非在容器构建镜像时定义了额外的访问权限。

Docker 存储

我们可以将数据存储在容器的可写层,但这需要一个存储驱动程序。存储驱动程序控制和管理 Docker 主机上的镜像和容器。

Docker 存储

Docker 存储的类型

  1. 数据卷:数据卷可以直接挂载到容器的文件系统中,本质上是 Docker 主机文件系统上的目录或文件。
  2. 卷容器:为了维护正在运行的容器生成的容器(数据)的状态,Docker 卷文件系统被挂载在 Docker 容器上。由于卷的生命周期独立于容器,因此它们存储在主机上。这使得用户可以轻松地在容器之间交换文件系统并备份数据。
  3. 目录挂载:可以指定作为容器中的卷挂载的主机目录。
  4. 存储插件: Docker 卷插件使我们能够将 Docker 容器与 Amazon EBS 等外部卷集成,这样我们就可以维护容器的状态。

Docker 网络

Docker 网络为 Docker 容器提供完全隔离。这意味着用户可以将 Docker 容器连接到多个网络。运行工作负载所需的操作系统实例非常少。

Docker 网络类型

  1. Bridge:它是默认的网络驱动程序。当不同的容器与同一个 docker 主机通信时,我们可以使用它。
  2. Host:当您不需要容器和主机之间任何隔离时,就可以使用它。
  3. Overlay:为了相互通信,它将启用群服务。
  4. None:禁用所有网络。
  5. macvlan:该网络为容器分配 MAC(媒体访问控制)地址,看起来像物理地址。
作者

鹏叔

发布于

2025-04-27

更新于

2025-04-28

许可协议

评论