Docker 不是一个单一的软件。它由几个不同的工具组成,本文将介绍守护程序和 CLI。
Docker 作为一个整体由许多不同的工具组成,但是当大多数人谈论安装和使用 Docker 时,它指的是 Docker 守护程序和 Docker CLI。
可视化 Docker 的架构
以下是 Docker 内部工作原理的一瞥:
现在让我们自下而上定义这些层:
- 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命令行与守护进程如何交互?
从左到右讨论上图:
- 最左边是客户端,这是我们运行各种 Docker 命令的地方。客户端可以安装在运行 Windows、MacOS 的笔记本电脑或运行 Linux 的服务器上,没关系。
- 中间,是Docker 主机,上面是Docker守护进程。这通常称为运行 Docker 守护程序的服务器。这有道理吗?它是运行 Docker 守护进程的主机。
配置 Docker 客户端以连接到远程 Docker 主机非常简单。这是您能够在 MacOS 和 Windows 上运行 Docker 的一种方式。
在这种情况下,Docker 守护程序最终会在使用 Linux 的虚拟机中运行,并且 Docker 客户端被配置为连接到该远程 Docker 主机。
这里的关键是,客户端和守护进程不需要在同一个盒子上。 - 最右边是Docker仓库,它也是 Docker 生态系统的一部分,但现在你可以忽略它。讨论它的作用超出了本文的范围,但如果我把它砍掉会看起来很奇怪,因为那样箭头就不会从哪里来。
只要明白它不是 Docker 默认安装的东西,而是一个查找和下载 Docker 镜像的地方。
这就是 Docker 的工作原理一目了然。