![](https://csdnimg.cn/release/download_crawler_static/9549089/bg3.jpg)
1-2
基本上你可以认为目前的 Docker 是 LXC 的一个高级封装,提供了各种辅助工具和标
准接口方便你使用 LXC,你可以依靠 LXC 和各种脚本实现与 docker 类似的功能,就
像你不使用 APT/yum 等工具也可以自己搞定软件包安装一样,你使用他们的关键原
因是方便易用。实际使用中,你一般不用关心底层 LXC 的细节,同时也不排将来
docker 实现基于非 LXC 方案的可能性。在 LXC 的基础上, Docker 额外提供的
Feature 包括:标准统一的打包部署运行方案, 历史版本控制, Image 的重用,
Image 共享发布等等。
除了 LXC,Docker 的核心思想就体现在它的运行容器构建方案上。
为了最大化重用 Image,加快运行速度,减少内存和磁盘 footprint, Docker container
运行时所构造的运行环境,实际上是由具有依赖关系的多个 Layer 组成的。例如一
个 apache 的运行环境可能是在基础的 rootfs image 的基础上,叠加了包含例如
Emacs 等各种工具的 image,再叠加包含 apache 及其相关依赖 library 的 image,
这些 image 由 AUFS 文件系统加载合并到统一路径中,以只读的方式存在,最后再
叠加加载一层可写的空白的 Layer 用作记录对当前运行环境所作的修改。有了层级
化的 Image 做基础,理想中,不同的 APP 就可以既可能的共用底层文件系统,相
关依赖工具等,同一个 APP 的不同实例也可以实现共用绝大多数数据,进而以 copy
on write 的形式维护自己的那一份修改过的数据等。