1 docker 简介 Docker 提供了一个可以运行你的应用程序的封套(envelope),或者说容器
它原本是 dotCloud 启动的一个业余项目,并在前些时候开源了
它吸引了大量的关注和讨论,导致 dotCloud 把它重命名到 Docker Inc
它最初是用 Go 语言编写的,它就相当于是加在 LXC(LinuX Containers,linux 容器)上的管道,允许开发者在更高层次的概念上工作
Docker 扩展了 Linux 容器(Linux Containers),或着说 LXC,通过一个高层次的 API 为进程单独提供了一个轻量级的虚拟环境
Docker 利用了 LXC, cgroups 和 Linux 自己的内核
和传统的虚拟机不同的是,一个 Docker 容器并不包含一个单独的操作系统,而是基于已有的基础设施中操作系统提供的功能来运行的
Docker 类似虚拟机的概念,但是与虚拟化技术的不同点在于下面几点: 1
虚拟化技术依赖物理CPU 和内存,是硬件级别的;而 docker 构建在操作系统上,利用操作系统的containerization 技术,所以 docker 甚至可以在虚拟机上运行
虚拟化系统一般都是指操作系统镜像,比较复杂,称为“系统”;而 docker 开源而且轻量,称为“容器”,单个容器适合部署少量应用,比如部署一个 redis、一个 memcached
传统的虚拟化技术使用快照来保存状态;而 docker 在保存状态上不仅更为轻便和低成本,而且引入了类似源代码管理机制,将容器的快照历史版本一一记录,切换成本很低
传统的虚拟化技术在构建系统的时候较为复杂,需要大量的人力;而 docker 可以通过 Dockfile 来构建整个容器,重启和构建速度很快
更重要的是 Dockfile 可以手动编写,这样应用程序开发人