原文地址:https://docs.docker.com/get-started/overview/
Docker 作为开发、传输和运行应用程序的开源平台,它能够让你的应用与环境分离开来,从而快速地分发你的应用。通过 Docker,你可以像管理你的应用程序一样来管理的基础环境。利用 Docker 快速迁移、测试和部署代码的优势,你可以非常显著地减少在编写代码和在生产环境运行应用的耗费时间。
1. Docker平台
Docker 给我们提供了在独立环境中(后面我们称之为**容器**) 打包和运行应用的能力,其独立性和安全性允许你在宿主机上运行同时多个容器。容器是轻量级的,因为它们不需要加载额外的管理程序,且直接运行在宿主机内核上。这意味着,对比使用虚拟机,你可以在指定硬件组合上运行更多容器。你甚至可以在虚拟机上运行 Docker 容器。
Docker 提供了工具和平台来管理容器的生命周期:
- 使用容器开发应用程序及其支持组件
- 容器成为分发和测试应用程序的单元
- 准备就绪后,将应用程序作为容器或编排的服务部署到生产环境中。无论您的生产环境是本地数据中心、云提供商还是两者的混合体,这都是一样的。
2. Docker引擎
Docker 引擎是作为客户端-服务器端的应用,包含以下主要组件:
- 服务器:运行守护进程的程序 (
dockerd
命令) - REST API:指定程序可用的接口,用来和守护进程进行交互,并指示所做的内容
- 命令行接口(CLI) 工具:
docker
命令
CLI 通过脚本或者直接命令行方式,使用 Docker API 对 Docker 的守护进程进行控制和交互。许多其他 Docker 应用使用底层的 API 和 CLI。
Docker 守护进程创建和管理 Docker 对象,例如镜像、容器、网络和卷。
注意:Docker 符合 Apache 2.0 开源协议。
关于更多信息,可以查看 Docker 架构。
3. Docker可以做什么?
1️⃣ 快速、一致性地分发应用
Docker 简化了开发的生命周期,允许开发人员在标准化环境(集成应用程序和服务的本地容器) 中工作。容器对于持续集成(continuous integration) 和交付(continuous delivery) 的工作流非常有用。
思考以下的示例场景:
- 开发人员在本地编写代码,并通过 Docker 容器与同事共享工作。
- 开发人员使用 Docker 将应用程序推送到测试环境中,并执行自动化和手动测试。
- 当开发人员发现 bug 时,可以在开发环境中修复它们,并将它们重新部署到测试环境中进行测试和验证。
- 测试完成后,向客户提供修复就像将更新后的镜像推送到生产环境中一样简单。
2️⃣ 响应式地部署和扩展
Docker 基于容器的平台特点,支持高度可移植的工作负载。同时,Docker 容器可以运行在开发人员的本地笔记本电脑上、数据中心的物理机或虚拟机上、云提供商上或混合环境中。
Docker 的可移植性和轻量级特性也使得动态管理工作负载变得非常容易,根据业务需求,以近乎实时的方式扩展或删除应用程序和服务。
3️⃣ 在同一硬件上运行更多的工作负载
Docker 具备轻量级和快速的优点,它为基于管理程序的虚拟机提供了可行的、经济高效的替代方案,从而可以使用更多的计算能力来实现业务目标。Docker 非常适合高密度环境,以及想要通过更少的资源来做更多事情的中小型部署场景下使用。
4. Docker架构
Docker 使用客户机-服务器的架构体系,客户机与守护进程进行交互,