本书未发布

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 容器类似的体验,以统一开发和生产环境的流程。

如果你是新手,上面的信息对你来讲很抽象,没关系,你不需要死记硬背,后面的学习中你会无数次遇到他们,很快就会熟络起来。

本文章首发在 LearnKu.com 网站上。

本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
上一篇 下一篇
Summer
贡献者:2
讨论数量: 0
发起讨论 只看当前版本


暂无话题~