Linux 容器 – 完整的初学者参考

Linux Containers 是一组相互隔离的多个进程以及系统环境的其余部分。 它们在当今的 IT 世界中扮演着非常重要的角色。 由于其灵活性、省时性和多功能性,它越来越受欢迎。

如果您要进入 DevOps,必须了解 Linux 容器。

在本文中,我们将讨论什么是 Linux Containers 或 LXC,我们可以在何时何地使用它们。 我们还将讨论为什么甚至需要它。

什么是 LXC(Linux 容器项目)?

Linux Containers Project 或 LXC 是一个开源容器平台,通过强大的 API 和简单的工具为 Linux 包含功能提供用户空间界面。 它帮助 Linux 用户创建和管理系统或应用程序容器。

像 Docker 这样的 Linux 容器使应用程序与系统的隔离成为可能,而无需实际隔离它们并帮助它们与外部环境进行通信和交换信息。

Linux 容器

LXC(Linux Containers Project)由 Linux 发行版 Ubuntu 背后的组织 Canonical 提供支持。 因此,它可轻松用于所有 Linux LTS 版本,并且还定期获得支持和安全更新。

Linux Containers 的概念于 2001 年引入,作为在 VServer 项目框架内实现的隔离环境,这是 Linux 中众多受控命名空间的基础和设置的基础,我们今天将其称为 Linux Containers。

随着时间的推移,其他技术如 cgroups(控制组)出现。 cgroup 有权限制和控制整个进程组的资源使用。

systemd 甚至在此之后出现,它是一个初始化命名空间及其进程管理的系统。

LXC 的目标是什么?

LXC 旨在创建一个与实际 Linux 安装类似的环境,而无需单独的内核。

Linux Containers 背后的基本思想与虚拟化相同。 但区别在于容器在操作系统级别工作,而虚拟机在硬件级别工作。

容器将操作系统拆分为开放式并将应用程序进程与整个系统隔离,而虚拟化提供虚拟机,即在系统上同时运行多个操作系统的能力。

虚拟机与 Linux 容器

与 VM(虚拟机)相比,Linux Container 更相似,但它节省了运行单独内核和模拟所有硬件的开销,使其更轻、更快。

与其他容器技术相比,从虚拟机到容器技术(如 Linux Containers)的过渡很容易。

为什么我们需要 LXC?

LXC 旨在创建一个与实际 Linux 安装类似的环境,而无需单独的内核。 它有助于应用程序开发加快速度,容器技术可用于隔离、配置和移植。

当涉及到实时数据流时,容器发挥作用并大放异彩,因为它们根据应用程序的需要提供可扩展性。

具有 LXC 的平台可以托管在多个云之间,提供可移植性并保证应用程序在每个系统上正确运行。

Linux Containers 有一个默认界面可以同时管理多个容器。 Linux Containers 接口可以启动和停止大型应用程序,也可以修改它们的环境变量

LXC 何时何地使用?

为了便于理解,我们举个例子来说明为什么需要Linux Containers。 在任何组织中,人们用来开发应用程序的开发环境可能因人而异,服务器环境也大不相同。

因此,问题出现了,如果一个人正在开发一个功能,它可能会也可能不会在服务器上工作,也可能在其他开发人员协作项目的开发环境中工作。 由于环境的巨大差异,代码也可能在生产中中断。 大量时间用于测试和修复代码以使其与服务器兼容。

一种解决方案是创建一个模拟服务器环境的虚拟机来测试应用程序,然后再将其部署到生产环境中。 虽然它很好,但不是最佳实践,因为缺乏可移植性并且使用大量系统资源和时间。

更好的解决方案是使用 Linux Containers,因为它们可以在您的系统上创建任何类型的环境,作为类似于服务器的隔离环境。 而且它也可以复制,因此其他人可以轻松地以相同的配置使用它。

本机运行应用程序与容器化应用程序

Linux Containers 节省了大量用于测试的时间,因为如果您的应用程序在容器内运行良好,它肯定也可以在服务器上运行。

Linux 容器在从开发到测试以及最终到生产的过程中非常一致和可移植,这使得它们比依赖传统测试环境的虚拟化技术或开发管道更快地使用。

Linux Containers 也很灵活,可以根据需要进行调整,在很大程度上就像在基础设施级别一样,这意味着它们可以在本地、云或混合环境中使用。

Linux 容器如何工作?

使用 LXC 的最佳实践是将单个容器链接到进程,提供完全控制。 对于每个进程,使资源可用于使用相同命名空间的一个或多个进程的命名空间本质上是重要的。 这些过程还充当保护容器的访问控制。

Linux Containers 平台使用内核的以下特性在容器中包含应用程序和进程——

  • Chroots(使用 pivot_root)
  • 内核命名空间(ipc、uts、mount、pid、network 和 user)
  • cgroups(对照组)
  • Seccomp 政策
  • AppArmor 和 SELinux-Profile
  • 内核能力

构成 Linux 容器的各种组件是——

  • liblxc 库
  • 几个 API 语言绑定:
    • python3(2.0.x 长期支持)
    • lua(在 2.0.x 中长期支持)
    • 红宝石
    • Python
    • 哈斯克尔
  • 管理容器的一系列标准工具
  • 分发模板

为了能够使用 LXC 环境,它们的所有特性和功能都应该是清晰的。 cgroup 限制和隔离进程资源,如 I/O、内存、CPU 和网络资源。 一个 cgroup 持有的内容可以被编辑、划分优先级、管理和监控。

LXC 的优缺点

优点 –

  • 有一个用户友好的环境
  • 将应用程序与系统隔离而不实际隔离
  • 加速开发
  • 包含大量创新工具
  • 难以置信的速度
  • 易于使用,适合熟悉基于 Hypervisor 的虚拟化的系统管理员

缺点 –

  • 它在内存管理方面缺乏其他虚拟化方法,默认情况下这里的所有内容都保存到rootfs

奖金

  • 一个非常好的 LXC 替代品是 Docker。
  • Linux Containers Project (LXC) 是开源的,你可以在这里找到它的代码。

结论

在本文中,我们详细讨论了 Linux 容器、它们的亮点以及它们如何超越虚拟机。 我们都列出了它的组件、使用的功能、优缺点以及它在 IT 世界中越来越受欢迎的原因。 这很重要,如果您在服务器上进行部署并构建大中型应用程序,则应该尝试一下。