【零基础入门Docker】Docker的架构

面向读者:所有人

所属专栏:Docker零基础入门教程

什么是 Docker 守护进程?

Docker客户端(Docker Client)

Docker主机(Docker Host)

Docker 注册机(Docker Registry)

Docker 对象(Docker Objects)

Docker 镜像(Docker Images)

Docker容器(Docker Containers)

Docker存储对象(Docker Storage)

Docker 存储的类型 

Docker 网络

Docker 网络的类型

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

什么是 Docker 守护进程?

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

Docker客户端(Docker Client)

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

docker 客户端的主要目标是提供一种直接从 docker 注册表拉取镜像并在 docker 主机上运行它们的方法。客户端使用的常用命令是docker build、docker pulldocker run。

Docker主机(Docker Host)

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

Docker 注册机(Docker Registry)

所有的 docker 镜像都存储在 docker 注册表中。有一个公共注册表,称为docker hub ,任何人都可以使用。我们也可以运行我们的私人注册表。借助docker rundocker pull命令,我们可以从配置的注册表中提取所需的映像。借助docker push命令将映像推送到配置的注册表中。

Docker 对象(Docker Objects)

每当我们使用 docker 时,我们都会创建和使用图像、容器、卷、网络和其他对象。

Docker 镜像(Docker Images)

镜像包含创建 docker 容器的说明。它只是一个只读模板。它用于存储和发送应用程序。镜像是 Docker 体验的重要组成部分,因为它们使开发人员之间能够以任何方式进行协作,这在以前是不可能的。

Docker容器(Docker Containers)

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

Docker存储对象(Docker Storage)

我们可以将数据存储在容器的可写层中,但它需要存储驱动程序。存储驱动程序控制和管理我们的 docker 主机上的图像和容器。 

Docker 存储的类型 

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

Docker 网络

Docker 容器提供了完全的隔离。这意味着用户可以将 docker 容器链接到许多网络。它需要非常少的操作系统实例来运行工作负载。

Docker 网络的类型 

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