Flock 2014 第 3 天:Docker 和 Fedora

码头工人,码头工人,码头工人! 很容易成为今年 Flock(或一般技术)上最受欢迎的话题之一,雅虎的 Arun SAG 周五上午就 Docker 和 Fedora,以及 Docker 与其他基于 Linux 的容器技术的简要比较。

Arun 从容器是什么、Docker 是什么的一些基础知识开始,并稍微介绍了各种类型的内核命名空间隔离和 cgroup。 考虑到演讲的时间(45 分钟),Arun 的概述有点轻松。 毫无疑问,演讲者可以只用那个话题填满整个会议。 对于想要深入了解的人,看看这个 在 Docker 博客上发布有关容器和 Docker 安全性的文章. 它可能有点过时,但作为一个合理的概述。

比较容器技术 Fedora

接下来,Arun 讨论了容器技术在 Fedora,涉及 chroots、lxc 和 Docker,并对它们的优缺点进行了高级概述。

chroot 实用程序非常简单,并不是大多数用户在讨论容器时会寻找的东西。 Arun 指出,对于 chroot 几乎没有隔离,并且恶意进程可能能够突破 chroot。 此外,chroots 缺乏可移植性,并且缺乏很多工具来使其更易于使用。

然而,这并不是说 chroot 没有用。 Arun 指出 chroot 可以很好地构建 RPM,并被 嘲笑 工具集来创建包。

不像 chroot 实用程序那么古老,你也有 Linux 容器 (LXC)。 LXC 建立在 cgroups 之上,并且已经存在了很长一段时间。 虽然比 chroot 高出几个步骤,但 LXC 的功能不如 Docker,而且缺乏用于创建容器的综合工具集,并且缺乏主机之间的可移植性。

Arun 将大部分时间花在 Docker 上,并指出它专注于打包可移植应用程序,并且对用户和开发人员有许多优势。 例如,Docker 支持版本控制,因此 Docker 容器中的应用程序可以拥有显示容器组装方式的历史记录、回滚到以前版本的能力以及增量下载功能。

Docker 还允许组件重用,因此容器可以用作新应用程序的基础镜像——这使得使用类似 Fedora Docker 镜像 并创建新图像。

Arun 指出,雅虎有几个团队负责其基础设施的特定部分(一个负责操作系统,另一个负责 Apache, ETC。)。 他说,雅虎通常不使用“来自回购的商品”,而是将许多自己的组件/包放在一起。 Docker 允许一个组创建基础镜像,然后让另一个组添加类似 Apache,然后另一个添加其最终应用程序。 “它就像你的操作系统映像的 git!”

他说,Docker 在 Fedora 作为一种技术,并且图像是公开的。 他说,LXC 是“另一回事”,他指出他将努力改善这种情况。

我对 Arun 提出的一个问题是关于 Linux 容器技术和 FreeBSD 的 Jails 之间的比较。 据我回忆,雅虎的基础架构中有大量的 FreeBSD。 Arun 说,雅虎在很大程度上已经远离了 FreeBSD(尽管仍有一些仍然存在),并且已经在 Linux 上实现了标准化。 至于 Linux 和 FreeBSD 的比较,Arun 表示 Linux 上的容器技术比 FreeBSD 领先“五到十年”。

总的来说,这是一个有趣的高级概述,尽管我希望能更详细地了解雅虎如何大规模打包和管理其应用程序。