Containerization is a virtualization technique that allows one to create and run executables consistently on any infrastructure. Compared to virtual machines, containers are lighter since they do not bundle a (guest) operating system but they share its kernel, and they only include the files, libraries, and dependencies that are required to properly execute a process. In the past few years, multiple container engines (i.e., tools for configuring, executing, and managing containers) have been developed ranging from some that are ``general purpose'', and mostly employed for Cloud executions, to others that are built for specific contexts, namely Internet of Things and High-Performance Computing. Given the importance of this technology for many practitioners and researchers, this paper analyses six state-of-the-art container engines and compares them through a comprehensive study of their characteristics and performance. The results are organized around 10 findings that aim to help the readers understand the differences among the technologies and help them choose the best approach for their needs.
翻译:容器化是一种虚拟化技术,允许在任何基础设施上一致地创建和运行可执行文件。与虚拟机相比,容器更轻量,因为它们不捆绑(客户)操作系统,而是共享其内核,并且仅包含正确执行进程所需的文件、库和依赖项。近年来,多种容器引擎(即用于配置、执行和管理容器的工具)被开发出来,从一些“通用型”且主要用于云执行的引擎,到其他为特定上下文(如物联网和高性能计算)构建的引擎。鉴于这项技术对许多从业者和研究人员的重要性,本文分析了六种最先进的容器引擎,并通过对其特性和性能的全面研究进行比较。结果围绕10项发现进行组织,旨在帮助读者理解这些技术之间的差异,并帮助他们根据自身需求选择最佳方法。