3 Containers in the clouds illustration
Jump to section

什么是 Linux 容器?

复制 URL

Linux® 容器是与系统其他部分隔离开的一个或一组进程。运行这些进程所需的所有文件都由另一个特定镜像提供,意味着从开发到测试再到生产整个过程中,Linux 容器都是可移植且一致的。因此,相对于依赖重复传统测试环境的开发渠道,使用容器速度要快得多。容器比较普遍也易于使用,因此也成了 IT 安全方面的重要组成部分。

假设您在开发一个应用。您使用的是一台笔记本电脑,而且您的开发环境具有特定的配置。其他开发人员身处的环境配置可能稍有不同。您正在开发的应用不止依赖于您当前的配置,还需要某些特定的库、依赖项和文件。与此同时,您的企业还拥有标准化的开发和生产环境,有着自己的配置和一系列支持文件。您希望尽可能多在本地模拟这些环境,而不产生重新创建服务器环境的开销。因此,您要如何确保应用能够在这些环境中运行和通过质量检测,并且在部署过程中不出现令人头疼的问题,也无需重新编写代码和进行故障修复?答案就是使用容器。

什么是 Linux 容器?

容器可以确保您的应用拥有必需的库、依赖项和文件,让您可以在生产中自如地迁移这些应用,无需担心会出现负面影响。实际上,您可以将容器镜像中的内容(使用 Buildah 等开源工具创建)视为 Linux 发行版的一个安装实例,因为其中完整包含 RPM 软件包、配置文件等内容。但是,安装容器镜像发行版,要比安装新的操作系统副本容易得多。这样可以避免危机,做到皆大欢喜。

虽然这只是一个常见情况的示例,但在要求可移植性、可配置性和隔离的情况下,我们可以利用 Linux 容器解决很多难题。Linux 容器的价值在于,它能加速开发并满足新出现的业务需求。在某些情形中(如通过 Apache Kafka 进行实时数据流处理),容器是不可或缺的,因为它们是提供应用所需的可扩展性的唯一途径。无论基础架构是在企业本地还是在云端,或者混合使用两者,容器都能满足您的需求。当然,选择正确的容器平台也同样重要。

红帽® OpenShift® 包括您进行混合云企业容器以及 Kubernetes 开发和部署所需的一切资源。

容器不就是虚拟化吗?实际上不完全如此。更确切的说法应该是:两者为互补关系。我们用一种简单方式来思考一下两者之间的关系:

  • 虚拟化使得您的操作系统(Windows 或 Linux)可同时在单个硬件系统上运行。
  • 容器则可共享同一个操作系统内核,将应用进程与系统其他部分隔离开。例如:ARM Linux 系统运行 ARM Linux 容器,x86 Linux 系统运行 x86 Linux 容器,x86 Windows 系统运行 x86 Windows 容器。Linux 容器具有极佳的可移植性,但前提是它们必须与底层系统兼容

虚拟机与容器的区别

这意味着什么?对于新手而言,虚拟化会使用虚拟机监控程序模拟硬件,从而使多个操作系统能够并行运行。但这不如容器轻便。事实上,在仅拥有容量有限的有限资源时,您需要能够进行密集部署的轻量级应用。Linux 容器在本机操作系统上运行,与所有容器共享该操作系统,因此应用和服务能够保持轻巧,并行化快速运行。

Linux 容器是我们开发、部署和管理应用方式的又一次飞跃。Linux 容器镜像提供了可移植性和版本控制,确保能够在开发人员的笔记本电脑上运行的应用,同样也能在生产环境中正常运行。黄金镜像是一种特殊的容器镜像类型,可为系统配置创建一致可靠的基线。相较于虚拟机,Linux 容器在运行时所占用的资源更少,使用的是标准接口(启动、停止、环境变量等),并会与应用隔离开;此外,作为大型应用(包含多个容器)的一部分时更加易于管理,而且这些多容器应用可以跨多个云环境进行编排。

甚至还存在将容器编排与虚拟机管理相结合的工具。通过 2020 年红帽全球峰会全程追踪了解更多信息,其中包括专门针对这类工具的分组会议。

作为一个开源容器平台,Linux 容器项目(LXC)提供了一组工具、模板、库和语言绑定。LXC 采用简单的命令行界面,可改善容器启动时的用户体验。

LXC 提供了一个操作系统级的虚拟化环境,可在许多基于 Linux 的系统上安装。在 Linux 发行版中,可能会通过其软件包存储库来提供 LXC。

我们现在称为容器技术的概念最初出现在 2000 年,当时称为 FreeBSD jail,这种技术可将 FreeBSD 系统分区为多个子系统(也称为 Jail)。Jail 是作为安全环境而开发的,系统管理员可与企业内部或外部的多个用户共享这些 Jail。

2001 年,通过 Jacques Gélinas 的 VServer 项目,隔离环境的实施进入了 Linux 领域。在完成了这项针对 Linux 中多个受控制用户空间的基础性工作后,Linux 容器开始逐渐成形并最终发展成了现在的模样。

很快,更多技术结合进来,让这种隔离方法从构想变为现实。控制组(cgroups)是一项内核功能,能够控制和限制一个进程或多组进程的资源使用。而 systemd 初始化系统可设置用户空间,并且管理它们的进程,cgroups 使用该系统来更严密地控制这些隔离进程。这两种技术在增加对 Linux 的整体控制的同时,也成为了保持环境隔离的重要框架。

进入 Docker 技术时代

2008 年,Docker 公司凭借与公司同名的容器技术通过 dotCloud 登上了舞台。Docker 技术带来了很多新的概念和工具,包括可运行和构建新的分层镜像的简单命令行界面、服务器守护进程、含有预构建容器镜像的库以及注册表服务器概念。通过综合运用这些技术,用户可以快速构建新的分层容器,并轻松地与他人共享这些容器。

我们可通过 3 个主要标准,来确保各种容器技术间的互操作性,即 OCI 镜像、分发和运行时规范。通过遵循上述规范,社区项目、商用产品和云技术提供商可以构建可互操作的容器技术(可将您自行构建的镜像,推送至云技术提供商的注册表服务器——完成这一操作后,镜像才能正常工作)。当前,红帽和 Docker 等公司都是开放容器计划(OCI)的成员,致力于实现容器技术的开放行业标准化。

容器很受欢迎,那它的安全性又如何呢?容器的安全性会受到很多可变因素的影响——您需要保护好容器管道及应用、部署环境和基础架构;您也需要制定相应的计划,以便与企业的安全工具和策略进行整合。如果您需要制定计划,让我们来帮忙!

长久以来,红帽与开源社区一直在协同合作,以求让容器等技术变得安全、稳定可靠。这是我们的工作。我们同时为这些技术提供相应支持。因此,如果您需要帮助,我们随时待命。

红帽技术旨在助您排除所有不确定因素,确保您正确使用容器。无论您是想为团队提供容器化开发平台、在一流操作系统上运行容器基础架构,还是想为容器生成的大量数据寻找适合的存储解决方案,红帽解决方案都能满足您的特殊需求。

Keep reading

Article

What's a Linux container?

A Linux container is a set of processes isolated from the system, running from a distinct image that provides all the files necessary to support the processes.

Article

Containers vs VMs

Linux containers and virtual machines (VMs) are packaged computing environments that combine various IT components and isolate them from the rest of the system.

Article

What is container orchestration?

Container orchestration automates the deployment, management, scaling, and networking of containers.

详细了解容器

产品

企业就绪型 Kubernetes 容器平台,可实现全堆栈自动化运维,从而轻松管理混合云、多云和边缘部署。

相关资源

检查清单

在容器中开发应用:应与团队探讨的五个主题

技术概览

借助红帽OpenShift 将容器引入企业

电子书

增强混合云安全性

产品规格表

红帽 OpenShift:面向混合云的容器技术

培训

免费培训课程

"通过红帽来运行容器"技术概述

免费培训课程

容器、Kubernetes 和红帽 OpenShift 技术概述

免费培训课程

利用微服务架构开发云原生应用

Illustration - mail

获取更多类似的内容

免费订阅我们的 Red Hat Shares 通讯邮件