2.1. 什么是 Docker?
什么是 Docker
如果你是新人,当你在查阅 docker
相关资料时,这些名字会出现:
- Docker, Inc
- docker engine (CE / EE )
- docker for Mac
- docker for windows
- docker client
- docker host
- docker server
- docker hub
- docker registry
- docker compose
- docker swarm
- docker machine
- docker daemon
接下来我们一个个讲解
Docker (公司)
Docker, Inc 于 2010 年创建美国旧金山,当时公司名称为 dotCloud, Inc 是一家做容器的 PaaS (platform as a service) 服务商。类似于 Heroku。
2013 年 PyCon 上,Docker 第一次出现。Docker 一经推出,受到很多开发者的喜爱。2013 年底,正式将公司名称改为 Docker, inc,并将为世界提供简单易用的容器方案为使命。
Docker (软件)
Docker 有两个版本:Docker 社区版 (CE) 和 Docke r企业版(EE)。对于开发环境和小型团队,CE 足够用了,因此在本文中我们不会涉及 EE。CE 是免费的,而EE是 Docker, 公司 真正赚钱的方式。
Docker 软件由两个独立的程序组成,即 Docker Engine,也称为 Docker daemon(因为它实际上是后台运行的 Daemon) 和 docker client。
Docker Engine 和 Docker Daemon
Docker Engine 实际上是『Docker的大脑』。
对于每个进程,它都会生成一个新的 Linux 容器,为其分配新的文件系统,分配网络接口,为其设置 IP,为其设置NAT,然后在其中运行进程。
它还管理创建、删除和下载镜像,创建、重启和删除容器等许多事情。Docker Engine 通过命令行的方式使用 rest API 来控制 daemon。
Docker Client
Docker Client 提供 CLI 来控制 Docker daemon。它只是一个 HTTP API 封装。基本上,Docker client 向 Docker engine 发送 API 请求,Docker engine 本身实际上完成了所有的操作。Docker client 和 daemon 不必在同一台计算机上。您可以使用 docker
命令来访问其提供的 CLI。
Docker Host
Docker 主机是一台运行 Docker Daemon 后台程序的计算机。有时它也称为 Docker 服务器。
Docker Hub
Docker hub 是官方的镜像托管中心。Docker, Inc 维护了许多常用软件的官方镜像,同时也允许用户上传自己的镜像。你可以把镜像设置为公开或者私密,使用命令行即可下载(一般称为 Pull)这些镜像。
目前镜像基本上涵括所有服务器端软件,包括每一门编程语言、数据库、Web Server、队列服务等,这些镜像由相关技术背后的公司或者个人维护。并且每个镜像,都包含多个版本,有点类似于 GitHub,不过专注于 Docker 镜像。
除了 Docker 官方,其他大公司也提供了相关的的镜像托管中心可供选择,如: Quay 、 Google container registry 和 Amazon Elastic Container Registry。
你也可以构建自己的镜像托管中心,官方教程 —— 如何部署自己的镜像托管中心 。
Docker Registry
Docker Registry 是一个服务器端应用程序,允许您托管自己的 Docker 镜像存储库。Docker hub 上有官方提供的 Registry 镜像,你把他 Pull 下来后,当做容器运行,即可拥有属于自己的镜像托管中心。
官方教程 —— 如何部署自己的镜像托管中心 。
Docker For Mac
Docker for Mac 是由 Docker 公司提供的与 Docker 分离的独立软件,可简化在 Mac OS 上使用 Docker 进行开发。该软件包包含:
- Docker Client
- 本地 HyperKit 虚拟机管理程序上运行的功能完善的虚拟机
- 安装在该虚拟机内部的 docker deamon
- docker-compose 和 docker-machine 管理工具
- 虚拟机里容器的暴露端口会自动从 VM 转发到 localhost。
Docker For Windows
Docker for Windows 也是类似的方案。它将 Hyper-v(Windows 10 的本机虚拟化解决方案) 用于其虚拟化软件,并使您能够同时运行 Windows 类型的容器和 Linux 类型的容器。
Docker Machine
Docker Machine 是一种编排工具,可让您管理多个 Docker 主机(拥有 Linux 内核的虚拟主机,用以运行容器)。它允许您在本地或在云上配置多个虚拟 Docker 主机,并使用 docker-machine
命令对其进行管理。您可以启动,重新启动和检查这些主机。您可以将 Docker Client 指向主机之一,然后直接在该主机上管理守护程序。使用此工具可以通过多种方式管理 Docker 主机,详见 文档。
在 Docker v1.12 之前,Docker Machine 用以在 Docker for Mac 和 Docker for Windows 上创建虚拟机,作为容器的宿主机。v1.12 之后,Mac 和 Windows 有了效率更高的原生虚拟化支持,默认不再使用 Docker Machine 管理容器宿主机。
Docker Compose
Docker compose 也是 Docker 的编排工具。它允许您通过 docker-compose
CLI 轻松管理一个 Docker 主机中彼此依赖的多个容器。您使用 YAML 文件来配置所有容器。使用一个命令,您可以按正确的顺序启动所有容器并在它们之间建立网络。这是文档。
注意 Docker Machine 是管理虚拟机的,而 Docker Compose 是管理容器的。容器运行在主机上。
Docker Swarm
Docker Swarm 是另一个旨在管理 Docker 主机集群的编排工具。Docker-Compose 管理一个 Docker 主机中的多个 Docker 容器,Docker Swarm 管理多个 Docker 主机中的多个 Docker 容器。
与 Docker Compose 和 Docker Machine 不同,Docker Swarm 不是独立的协调软件。群模式内置在 Docker Engine中,并通过 Docker 客户端进行管理。
为了创建群集,您需要将 SSH 放入打算放入群集的计算机中,然后 docker swarm init --advertise-addr <ip to publish>
。现在,其他Docker主机可以加入该 IP 上的群。
总结一下
到目前为止我们了解了什么?
Docker 不是独立软件,它是用于管理 Linux 容器的平台。每当有人在开发中提到 Docker 时,他们就是在谈论 Docker CE 或 Docker EE。
Docker 是由 Docker 公司开发的,用于简化 Linux 容器的使用。Docker 平台由多个运行和管理 Linux 容器的工具组成,包括:
- Docker daemon/engine 负责创建和运行容器
- Docker client 通过 REST API 来管理 Docker deamon
- Docker-compose, docker-machine, and docker swarm 是编排工具,他们不是容器里运行的进程,他们的存在是为了让容器的管理更加简单。或者可以这么说,他们有存在必要性,否则的话手工管理这些容器、虚拟机和集群,绝对是不会是个好的商业策略。
- Docker hub 是镜像托管平台,有覆盖全面的 Docker 镜像可供使用,你可以可以上传自己定制的镜像。
- Docker registry 允许你构建自己的镜像托管平台(在一些信息敏感的公司里,或者其他特殊使用场景下)。
- Docker for Mac 和 Docker for Windows 是与 Docker 完全不同的工具,他们的存在只是为了在这两个平台上提供类似于 Linux Docker 容器类似的体验,以统一开发和生产环境的流程。
如果你是新手,上面的信息对你来讲很抽象,没关系,你不需要死记硬背,后面的学习中你会无数次遇到他们,很快就会熟络起来。
本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
推荐文章: