本书未发布

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 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://learnku.com/docs/docker/20.x/wha...

译文地址:https://learnku.com/docs/docker/20.x/wha...

上一篇 下一篇
Summer
贡献者:2
讨论数量: 0
发起讨论 只看当前版本


暂无话题~