今年,LinuxCon 和 ContainerCon 的与会者将有机会听到 Jerome Petazzoni 就 Docker、容器与安全:联盟状况 发表讲话。Jerome 在 Docker 公司工作,在那里他帮助其他人将所有事物容器化。Jerome 曾在各种技术领域工作,包括 VOIP、嵌入式系统、网络托管、虚拟化 和 云计算。
在这次访谈中,他深入了解了 Docker,并解释了如何管理 Docker 容器的存储以及如何使数据随 Docker 容器移动。
什么是容器?存在哪些不同的容器技术?Docker 与其他容器技术有何不同?
从高层次的角度来看,容器看起来像轻量级虚拟机。您可以在容器中安装任何您想要的东西,独立于(并且不影响!)其他容器或主机环境。每个容器都有自己的网络堆栈、进程 (PID) 空间、文件系统等。而且它们的占用空间明显小于虚拟机:容器启动更快,并且需要更少的内存和磁盘空间。这是因为,从低层次的角度来看,容器只是主机上的常规进程,使用内核功能(如命名空间和控制组)来提供隔离。启动容器只是启动一个常规的 UNIX 进程;创建容器只是克隆写时复制文件系统的快照(这在当今非常廉价,无论是在时间和磁盘使用方面)。
Docker 与其他容器技术的不同之处在于,它不仅仅是一个容器引擎。Docker 是一个平台,它包含 Docker Engine(用于运行容器)、Docker Hub(一个现成的容器镜像公共库,也可用于存储用户的自定义镜像)以及庞大的工具生态系统,如 Docker Compose、Docker Machine、Docker Swarm 等;所有这些都围绕公共和开放的 API。
Docker 与其他虚拟机监控程序虚拟化技术有何不同?
有人可能会说 Docker 是“容器的虚拟机监控程序”,但许多纯粹主义者可能会对这种比喻皱眉,因为虚拟机监控程序通常管理虚拟机,而 Docker 管理容器。深层的技术细节非常不同。当虚拟机监控程序启动虚拟机时,它会创建虚拟硬件,并利用特定的 CPU 指令或功能,如 VT-x、AMD-V 或特权级别。当 Docker 创建容器时,它利用内核功能(如命名空间和控制组),而不依赖于特定的硬件功能。
这意味着容器在某种意义上更具可移植性,因为它们可以在物理机和虚拟机上运行;但在另一种意义上,它们的可移植性也较差,因为容器将使用其主机内核。这意味着您不能在 Linux 内核上运行 Windows 容器(除非您的 Linux 内核可以执行 Windows 二进制文件)。
您建议如何管理 Docker 容器的存储?如何将数据与 Docker 容器链接起来?
Docker 具有“卷”的概念,卷是在容器及其主机之间共享的目录。卷在概念上类似于虚拟机上的“共享文件夹”,但它们不需要在容器中进行任何特定设置,并且它们具有零开销,因为它们是使用绑定挂载实现的。
当您的数据位于磁盘上(无论是实际磁盘、RAID 池还是通过网络挂载的东西,还是其他任何东西)时,最简单的选择是将该数据挂载到容器主机上,然后通过此“卷”机制将其公开给容器。
Docker 还具有一个(全新的,仍处于实验阶段的)插件机制,允许一个容器为其他容器提供存储。这意味着一个容器可以负责与成为 Ceph、Gluster 或其他存储集群成员相关的繁重工作,并将块设备和挂载点公开给其他容器。
当 Docker 容器在不同的机器上启动时,您如何使数据随 Docker 容器移动?
就像我们在容器之前所做的那样:网络存储、分布式文件系统、数据传输或使用 rsync、unison 等进行同步。但是,使用容器有两个优势。首先,我们访问数据的方式从容器中抽象出来。例如,如果我从 DRBD 切换到 Ceph,我的容器不必知道它;事实上,相同的容器将在本地存储或分布式存储上以相同的方式运行。另一个优势来自那些新的存储插件。它们将通过干净地分离应用程序容器和存储容器来简化数据访问。
如何确保对正在运行的 Docker 容器所做的更改更新回基础容器镜像?
Docker 提供了 API 调用来比较容器与其原始镜像,并从现有容器创建新镜像。这些 API 调用的 CLI 对等项是“docker diff”和“docker commit”。
Docker 容器如何帮助构建高可用性解决方案?
在构建高可用性系统时,您通常需要完成一个相当长的待办事项清单。Docker 将使其中一些步骤更容易。例如,确保在相关机器上部署一致版本的软件。Docker 不会神奇地解决问题(在系统操作中使用魔法通常不受欢迎),但它会使许多事情变得更轻松、更快速、更可靠——就像使用软件包管理器通常比从源代码编译所有内容更方便一样。
您如何看待 Docker 在企业客户生产环境中的采用率增长?
总体情况如下:Docker 最初是一个开发工具,用于实现一致的、可重复的开发环境,类似于 Hashicorp 的 Vagrant。然后,它发展到 CI/CD,在那里它有助于将测试时间缩短一半(甚至更多)。从那里开始,它被用于暂存或预生产环境,风险较低。最终,一旦运营团队在运行 Docker 方面获得了足够的经验和信心,它就会用于服务生产流量。
演讲者访谈
本文是 LinuxCon、CloudOpen 和 ContainerCon 北美 2015 的 演讲者访谈系列 的一部分。LinuxCon 北美 是一个活动,来自各行各业的“开发人员、系统管理员、架构师和技术人才齐聚一堂,进行教育、协作和解决问题,以进一步推动 Linux 平台的发展。”
评论已关闭。