何为docker

何为docker

Docker是一个虚拟环境容器,可以将你的开发环境、代码、配置文件等一并打包到这个容器中,并发布和应用到任意平台中。比如,你在本地用Python开发网站后台,开发测试完成后,就可以将Python3及其依赖包、Flask及其各种插件、Mysql、Nginx等打包到一个容器中,然后部署到任意你想部署到的环境。

Docker的三个概念

  1. 镜像(Image):类似于虚拟机中的镜像,是一个包含有文件系统的面向Docker引擎的只读模板。任何应用程序运行都需要环境,而镜像就是用来提供这种运行环境的。例如一个Ubuntu镜像就是一个包含Ubuntu操作系统环境的模板,同理在该镜像上装上Apache软件,就可以称为Apache镜像。

  2. 容器(Container):类似于一个轻量级的沙盒,可以将其看作一个极简的Linux系统环境(包括root权限、进程空间、用户空间和网络空间等),以及运行在其中的应用程序。Docker引擎利用容器来运行、隔离各个应用。容器是镜像创建的应用实例,可以创建、启动、停止、删除容器,各个容器之间是是相互隔离的,互不影响。注意:镜像本身是只读的,容器从镜像启动时,Docker在镜像的上层创建一个可写层,镜像本身不变。

  3. 仓库(Repository):类似于代码仓库,这里是镜像仓库,是Docker用来集中存放镜像文件的地方。注意与注册服务器(Registry)的区别:注册服务器是存放仓库的地方,一般会有多个仓库;而仓库是存放镜像的地方,一般每个仓库存放一类镜像,每个镜像利用tag进行区分,比如Ubuntu仓库存放有多个版本(12.04、14.04等)的Ubuntu镜像。

docker plantform

Docker 提供了在松散隔离中打包和运行应用程序的能力 称为容器的环境。隔离和安全性使您可以运行许多 容器同时在给定主机上。容器重量轻,包含 运行应用程序所需的一切,因此您无需依赖 安装在主机上。您可以在工作时共享容器, 并确保与您共享的每个人都获得在 同样的方式。

Docker 提供了工具和平台来管理容器的生命周期:

  • 使用容器开发应用程序及其支持组件。
  • 容器成为分发和测试应用程序的单元。
  • 准备就绪后,将应用程序部署到生产环境中, 作为容器或编排服务。无论您的 生产环境是本地数据中心、云提供商或混合环境 两者的。

我可以使用 Docker 做什么?

快速、一致地交付您的应用程序

Docker 通过允许开发人员在 使用本地容器的标准化环境,为您的应用程序提供 和服务。容器非常适合持续集成和连续 交付 (CI/CD) 工作流。

请考虑以下示例方案:

  • 您的开发人员在本地编写代码并与同事共享他们的工作 使用 Docker 容器。
  • 他们使用 Docker 将他们的应用程序推送到测试环境中并运行 自动和手动测试。
  • 当开发人员发现错误时,他们可以在开发环境中修复它们 并将它们重新部署到测试环境进行测试和验证。
  • 测试完成后,向客户提供修复程序非常简单: 将更新的映像推送到生产环境。

响应式部署和扩展

Docker 基于容器的平台允许高度可移植的工作负载。码头工人 容器可以在开发人员的本地笔记本电脑上运行,无论是物理的还是虚拟的 数据中心、云提供商或混合环境中的计算机。

Docker 的便携性和轻量级特性也使其易于动态传输 管理工作负载,扩展或缩减应用程序和服务 业务需求近乎实时地决定。

在同一硬件上运行更多工作负载

Docker是轻量级和快速的。它提供了一种可行、具有成本效益的替代方案 到基于虚拟机监控程序的虚拟机,以便您可以使用更多服务器 实现业务目标的能力。Docker非常适合高密度 环境以及需要执行更多操作的中小型部署 更少的资源。

码头工人架构

Docker 使用客户端-服务器架构。Docker 客户端与 Docker 守护进程,它负责构建、运行和 分发您的 Docker 容器。Docker 客户端和守护程序可以 在同一系统上运行,或者您可以将 Docker 客户端连接到远程 Docker 守护 进程。Docker 客户端和守护程序使用 REST API 通过 UNIX 进行通信 套接字或网络接口。另一个 Docker 客户端是 Docker Compose, 这使您可以处理由一组容器组成的应用程序。

Docker Architecture diagram

码头工人守护进程

Docker 守护程序 () 侦听 Docker API 请求并管理 Docker 对象,例如映像、容器、网络和卷。守护进程也可以 与其他守护程序通信以管理 Docker 服务。dockerd

码头工人客户端

Docker 客户端 () 是许多 Docker 用户交互的主要方式 与 Docker 一起。当您使用诸如 的命令时,客户端会发送这些命令 命令到 ,执行这些命令。该命令使用 Docker API。Docker 客户端可以与多个守护程序通信。docker``docker run``dockerd``docker

码头工人桌面

Docker Desktop 是一款易于安装的应用程序,适用于您的 Mac、Windows 或 Linux 环境,使您能够构建和共享容器化应用程序和微服务。Docker Desktop 包括 Docker 守护程序 ()、Docker 客户端 ()、Docker Compose、Docker Content Trust、Kubernetes 和 Credential Helper。有关更多信息,请参阅 Docker 桌面dockerd``docker

码头工人注册表

Docker 注册表存储 Docker 映像。Docker Hub 是公共的 任何人都可以使用的注册表,Docker在 默认情况下为 Docker Hub。您甚至可以运行自己的私有注册表。

使用 or 命令时,Docker 会从配置的注册表中提取所需的映像。当您使用该命令时,Docker 会推送 将映像添加到已配置的注册表。docker pull``docker run``docker push

码头工人对象

当您使用 Docker 时,您正在创建和使用映像、容器、网络、 卷、插件和其他对象。本节简要概述了一些 这些对象。

图像

映像是只读模板,其中包含有关创建 Docker 的说明 容器。通常,一个图像is_based另一个图像上,还有一些额外的 定制。例如,您可以构建一个基于该映像的映像,但会安装 Apache Web 服务器和您的应用程序,以及 使应用程序运行所需的配置详细信息。ubuntu

您可以创建自己的图像,也可以仅使用其他人创建的图像 并在注册表中发布。要构建自己的映像,请创建一个 Dockerfile 使用简单的语法来定义创建映像和运行所需的步骤 它。Dockerfile 中的每个指令都会在映像中创建一个图层。当你 更改 Dockerfile 并重建映像,仅更改那些具有 更改后重建。这是使图像如此轻巧,小巧, 与其他虚拟化技术相比,速度更快。

器皿

容器是映像的可运行实例。您可以创建、启动、停止、 使用 Docker API 或 CLI 移动或删除容器。您可以连接一个 容器到一个或多个网络,将存储附加到其中,甚至创建新的 基于其当前状态的图像。

默认情况下,容器与其他容器的隔离相对较好,并且 它的主机。您可以控制容器的网络、存储、 或其他底层子系统来自其他容器或主机 机器。

容器由其映像以及任何配置选项定义 在创建或启动它时提供它。删除容器后,对 未存储在持久存储中的状态将消失。