PaaS供应商dotCloud开源了自有平台上的关键组件Docker。Docker是一种增加了高级API的LinuX Container(LXC)技术,提供了能够独立运行Unix进程的轻量级虚拟化解决方案。它提供了一种在安全、可重复的环境中自动部署软件的方式。Docker使用标准化容器的概念,能够容纳软件组件及其依赖关系——二进制文件、类库、配置文件、脚本、Virtualenv、jar包、gem包、原始码等——而且可以在任何支持cgroups的64位(针对x64)Linux内核上运行。这样的容器可以部署在笔记本、分布式基础架构、云端或是其他地方,其对环境的保留适用于广泛的用途:持续部署、Web部署、数据库群集、SOA等等。 (Docker:具备一致性的自动化软件部署

构建开发生命周期,线路和开发工具是困难的事情,很难创建可移植的应用程序和服务。通常从开发环境到生产环境常常出现困难,也很难确保应用程序和服务一致性,及时更新和管理。

Docker设计目标是解决开发者和系统管理员的这些困难。Docker是一个轻量级的框架(具有强大的API)提供生命周期用来构建和部署应用程序到容器中。

Docker提供一种在容器中运行几乎任何应用程序的方法。容器隔离和安全性允许在主机上运行很多容器,容器的轻量级不需要hypervisor的多余的负载,这样可以从硬件获得更多的性能。 (Understanding Docker)

Docker由以下三个主要组件构成:

  • Docker containers
  • Docker images
  • Docker registries

Docker containers

Docker容器类似一个目录。一个Docker容器存储了运行一个应用程序的所有组件。每个容器通过一个Docker映像来创建。Docker容器可以运行,启动,停止,移动和删除。每个容器是一个隔离的和安全的应用平台。可以将Docker容器视为Docker框架的运行部分。

Docker images

Docker映像是一个模版,例如一个Ubuntu操作系统附带Apache和你的web应用程序。Docker容器从映像中启动。Docker提供了一个简单的方式来构建一个新的映像或者更新一个现有映像。你可以将Docker映像视为Docker框架的构建部分。

Docker Registries

Docker注册器存储映像。有一些公共的(或者私有的)存储可以用来上传和下载映像。这些映像可以由你自己创建,或者使用别人创建的镜像。Docker注册器允许你创建简单和强大的开发和部署工作流。可以将Docker注册器视为Docker框架的共享部分。

Docker如何工作

Docker是一个客户-服务器架构。Docker客户端命令传递给Docker服务,服务则创建,构建和管理容器。

Docker daemon使用了一些巧妙的Linux内核和操作系统特性,例如 namespacescgroups ,来构建隔离的容器。Docker提供了这些技术的一个抽象层。

Docker的特性

  • 具有可移植性
  • 轻量级
    • 依赖操作系统级别的功能提供隔离和安全
    • 可以在一个系统内部署大量的应用程序
    • 快速启动
  • 可以在容器中运行任何应用程序
  • 运行以下操作系统中运行Docker
    • 有一个 Boot2Docker 可以在非Linux系统,如Windows或Mac OS X中使用Virtualbox虚拟机中运行 Tiny Core Linux 来实现Docker容器
    • Linux - Ubuntu, CentOS / RHEL, Fedora, Gentoo, openSUSE
    • IaaS - Amazon AWS, Goolge GCE
    • Microsoft Windows
    • OS X

进一步了解Docker