Docker(前身为 dotCloud)今年开源了其用于创建“轻量级、可移植、自给自足的容器”的软件,为其平台即服务产品提供了动力,引起了巨大轰动。
开发者们感到兴奋,因为 Docker 为管理服务器环境提供了比 Chef 和 Puppet 更易于使用的替代方案。Docker 允许开发者简单地获取其系统的镜像并与团队共享,而不是与配置文件作斗争。当团队成员对其本地环境进行更改时,他们只需创建一个新镜像(Docker 容器)并与团队共享。这就像用于磁盘镜像的 git。
最近,Red Hat 和 Docker 宣布他们将在几个项目上合作。其中之一是将 Docker 打包到 Fedora 项目中:这是一个由 Red Hat 赞助、志愿者驱动、非常稳定的 Linux 操作系统。我向 Alexander Larsson,Red Hat 的首席软件工程师,对应用程序容器技术感兴趣,询问了一些关于合作的问题。
Fedora 社区希望如何使用 Docker?
我们力求经常且尽早地将有趣的新技术带给 Fedora 用户。此外,Docker 在整个社区,尤其是在 DevOps 社区中,引起了广泛的兴趣。这些人中的许多人正在运行 Fedora,并希望在 Fedora 服务器上部署 Docker 和/或基于 Fedora 版本构建 Docker 容器。重要的是允许这些人继续按照他们希望的方式使用 Fedora。
使 Docker 在 Fedora 上运行也是使其在 RHEL 上运行的第一步,而 RHEL 支持是 Docker 问题跟踪器中最常被请求的错误。
为了使 Docker 与 Fedora 兼容,解决了哪些不兼容性问题?
主要问题是 Docker 依赖于 AUFS 联合文件系统,该文件系统不包含(也不期望包含)在上游内核中。(它目前在 Ubuntu 内核中,但已被弃用,最终将被删除)。AUFS 允许在启动容器时对 Docker 镜像进行写时复制实例化,这对于 Docker 来说至关重要,因为它意味着启动容器快速且廉价。
我们研究了 Linux 中可用的各种写时复制技术,最终确定 device-mapper 是目前唯一稳定且广泛可用的解决方案。Device-mapper 是逻辑卷管理器的内核部分,它允许使用“精简配置”模块的写时复制块设备。因此,我基于此编写了一个新的 Docker 后端,这是即将发布的 0.7 版本中的主要新功能。
还有许多小问题,例如打包新的依赖项、修复我们的 go 包中的一些错误以及处理与现有“Docker”包的名称冲突。我们还在处理一些严格来说不是不兼容性,而是使 Docker 更好地与 Fedora 集成的事情。例如,Josh Poimboeuf 正在开发 Docker 的 libvirt-lxc 后端,我们正在 Docker 镜像中添加对 capability 标志的支持(许多 Fedora 包都使用)。我们还在开发基于 Fedora 版本的 Docker 基础镜像。
请向我们介绍一下 Linux 容器,以及它与虚拟机相比如何。
“容器”的定义基于一个广泛的概念,可以以多种方式使用,但核心上,“容器”是一种基于内核的进程隔离形式,非常廉价。内核为容器进程设置一组新的命名空间,使得容器看起来像是计算机上唯一运行的东西。然后,您实际上在容器内运行一个单独的操作系统(仅共享内核)。
就像虚拟化一样,可以在容器内运行完整的 Linux 发行版,但这通常不是您使用容器的目的。相反,您只在容器内运行单个进程,仅将程序需要的最低要求放入容器中。例如,容器通常没有 init/cron/udev、没有硬件支持、没有磁盘/网络配置等。所有这些都由主机操作系统处理。
Docker 如何改进云端工作?
Docker 使创建和部署容器镜像非常容易。开发者可以非常快速地在自己的机器上,基于广泛可用的基础镜像之一创建和配置容器。然后,他们可以在本地测试容器,当它工作时,创建一个标准化的镜像,他们可以将其部署到云中的任何地方,运行与他们在本地测试的完全相同的位集。
Docker 还使得以标准化的方式与他人共享镜像变得更容易,类似于 git。开发者在本地将其容器提交到镜像,然后将其推送到远程仓库,每个人都可以通过一个命令拉取它,并将其用作他们工作的基础。
您是否期望 Docker 帮助为 Linux 平台创建更多工具?
希望我们能看到各种各样的预配置服务设置作为 Docker 镜像,从而更容易设置新服务。我也认为,拥有标准化的服务格式将导致围绕更高层次的服务编排进行更多标准化。服务发现、将服务相互连接、配置服务等。
3 条评论