Container Runtime #
正如在container registry部分所讨论的,容器是一组用于执行(或启动)应用程序的计算约束。容器化的应用程序认为自己运行在一台专用计算机上,而不会意识到它们实际上与其他进程共享资源(类似于虚拟机)。
容器运行时是用于执行容器化(或“受限”)应用程序的软件。如果没有运行时,就只有容器镜像,这是一种静态文件,用于指定容器化应用程序的形态。运行时会在容器中启动一个应用程序,并为其提供所需的资源。
解决的问题 #
容器镜像(包含应用程序规范的文件)必须以标准化、安全且隔离的方式被启动。之所以需要标准化,是因为无论容器在哪里运行,都必须遵循统一的操作规则。需要安全,是因为您不希望未经授权的人能够访问它。而需要隔离,则是为了防止应用程序影响或被其他应用程序影响(例如,如果一个共同部署的应用程序崩溃时)。隔离本质上起到了保护作用。此外,还必须为应用程序提供资源,例如 CPU、存储和内存。
提供的帮助 #
容器运行时负责完成所有这些任务。它能够在所有环境中以标准化的方式启动应用程序,并设置安全边界。在安全边界的实现方面,不同工具之间存在差异。例如,CRI-O 和 gVisor 等运行时增强了安全边界的保护性。此外,容器运行时还负责为容器设置资源限制。如果没有资源限制,应用程序可能会根据需要无限制地消耗资源,从而占用其他应用程序的资源。因此,始终需要设置资源限制。
技术基础 #
并非这一类别中的所有工具都具有相同的功能或定位。Containerd(著名 Docker 产品的一部分)和 CRI-O 是标准的容器运行时实现。而一些工具则将容器的使用扩展到其他技术领域,例如 Kata,它支持将容器以虚拟机的形式运行。另一些工具专注于解决特定的容器相关问题,例如 gVisor,它为容器和操作系统之间添加了额外的安全层。
Keywords #
- Container 容器
- MicroVM 微型虚拟机
Projects #
- containerd
- CRI-O