Docker 不是一个单一的软件。它由几个不同的工具组成,本文将介绍守护程序和 CLI。

Docker 作为一个整体由许多不同的工具组成,但是当大多数人谈论安装和使用 Docker 时,它指的是 Docker 守护程序和 Docker CLI。

可视化 Docker 的架构

以下是 Docker 内部工作原理的一瞥:

ci工具 docker docker ce cli_客户端


现在让我们自下而上定义这些层:

  • Docker 守护进程是在您的主机操作系统上运行的服务。它目前仅在 Linux 上运行,因为它依赖于许多 Linux内核功能,但也有几种方法可以在 MacOS 和 Windows 上运行 Docker。
  • Docker 守护进程本身公开了一个 REST API。从这里开始,许多不同的工具可以通过这个 API 与守护程序进行对话。
  • 最广泛使用的工具是 Docker CLI。它是一个命令行工具,可让您与 Docker 守护程序对话。安装 Docker 时,您将同时获得Docker 守护程序和 Docker CLI 工具。

它是一个客户端/服务器(C/S)架构

您可以将 Docker 描述为客户端/服务器应用程序。守护进程是服务端,而 CLI 是许多客户端之一。还有很多第三方客户端。

大多数流行编程语言的语言,它们都有对应的Docker客户端,如果需要,您甚至可以自己开发一个,使用REST API与Docker守护进程进行交互就好了。

使用客户端,你可以管理守护进程的许多不同组件,例如映像、容器、网络和数据卷。

Docker命令行与守护进程如何交互?

ci工具 docker docker ce cli_docker_02

从左到右讨论上图:

  • 最左边是客户端,这是我们运行各种 Docker 命令的地方。客户端可以安装在运行 Windows、MacOS 的笔记本电脑或运行 Linux 的服务器上,没关系。
  • 中间,是Docker 主机,上面是Docker守护进程。这通常称为运行 Docker 守护程序的服务器。这有道理吗?它是运行 Docker 守护进程的主机。
    配置 Docker 客户端以连接到远程 Docker 主机非常简单。这是您能够在 MacOS 和 Windows 上运行 Docker 的一种方式。
    在这种情况下,Docker 守护程序最终会在使用 Linux 的虚拟机中运行,并且 Docker 客户端被配置为连接到该远程 Docker 主机。
    这里的关键是,客户端和守护进程不需要在同一个盒子上。
  • 最右边是Docker仓库,它也是 Docker 生态系统的一部分,但现在你可以忽略它。讨论它的作用超出了本文的范围,但如果我把它砍掉会看起来很奇怪,因为那样箭头就不会从哪里来。

只要明白它不是 Docker 默认安装的东西,而是一个查找和下载 Docker 镜像的地方。

这就是 Docker 的工作原理一目了然。