Linux 容器 (LXC) 介绍

自云计算兴起以来,微服务一直在稳步流行。亚马逊和 Netflix 等公司正在使用云平台来提供他们最需要的服务。容器是此类云原生应用程序的核心。容器是一个隔离的环境,可促进微服务并提供卓越的扩展性和快速部署等优势。传统的基于管理程序的虚拟机(如 VMware)与操作系统级虚拟化服务(如 Docker 和 Linux 容器 (LXC))之间存在巨大差异。在本指南中,我们将为读者提供 LXC 的应用知识,LXC 是一个强大的 Linux 系统级虚拟化工具。

掌握 Linux 容器的多合一指南


如果您是一名Linux 管理员,想详细了解 LXC,那么这对您来说是完美的指南。在这篇文章中,我们描述了 LXC 的各种特性和优势,以及何时选择它而不是其他容器化服务。我们还将向您展示如何安装和开始使用 LXC。

Linux 容器:特性和基础


那么,什么是 LXC?正如我们已经说过的,它是一种虚拟化服务,允许我们旋转隔离的 Linux 环境集群。通过减少主机上的资源负载,它提供了大量优于单体虚拟机的好处。这使其成为构建、测试和部署云原生软件的理想选择。与其他操作系统级虚拟化工具不同,LXC 提供了更好的 Linux 环境

LXC 概述

LXC 不使用任何像管理程序那样花哨的资源控制机制。相反,它利用了 Linux 内核直接提供的主机遏制功能。它依赖的主要组件是namespacescgroups。自 2.6.24 版以来,它们首先被添加到内核中。cgroups又名“控制组”的主要设计原则是提供资源限制、优先级、会计和控制。命名空间负责对其他容器隐藏一个容器的进程空间和资源信息。

Linux 容器基本组件

此外,LXC 还内置了对各种 Linux 强化策略的支持,例如 Apparmor 和 SELinux 配置文件以及 Chroots。它可以毫不费力地在几乎所有架构和云中运行。此外,无论主机如何,您都可以启动任何 Linux 发行版。因此,假设您的主机正在运行 Ubuntu。您可以使用 LXC 容器在这台机器上轻松运行Red Hat 或 CentOS

LXC 与其他一些容器化服务不同,不能运行 Mac OS 或 Windows。这是因为 LXC 容器直接依赖于主机内核。因此,如果您想运行需要这些系统之一的应用程序,您应该考虑使用不同的平台,如Docker。总的来说,LXC 最适合需要以最少的资源开销运行隔离的 Linux 环境的人。

Linux 容器与 Docker


如果您在 DevOps 团队工作或作为站点可靠性专家,您应该已经熟悉 Docker。它是当今最流行的云原生应用容器化平台。因此,您可能会问自己 LXC 与 Docker 有何不同,或者哪一个更好。与任何技术一样,答案完全取决于您的用例。尽管如此,我们还是会深入了解这两种流行的虚拟化平台之间的差异。

LXC 与码头工人

与 LXC 相比,Docker 是一种相对较新的技术。事实上,它在早期就在幕后使用了 LXC。然而,Docker 从那时起已经走了很长一段路,并且已经实现了自己的解决方案。现在,Docker 和 LXC 之间的主要区别在于它们的设计选择。Docker 更强调构建应用程序。另一方面,LXC 旨在提供独立的 Linux 虚拟环境

开发人员通常使用 Docker 来创建可以在新版本到来时立即丢弃的应用程序。然而,使用 LXC 的应用程序是持久的。您可以通过 ssh 进入 LXC 容器,就像进入远程 Linux 主机并管理环境一样。Docker 不允许这样做,您将使用专门的工具来管理部署和测试。最后,您可以使用其中任何一个来构建云应用程序。人们在构建需要长时间维护的应用程序时,通常会选择 LXC 而不是 Docker。

LXC:组件


LXC 运行时由一堆单独的组件组成。这包括核心liblxc库、一组用于控制容器的标准工具、各种分发模板以及主要 API 的几种语言绑定。语言支持包括 Python、Go、Ruby、Lua 和 Haskell。此外,还有一些硬依赖项,如果没有这些依赖项,lxc 将无法安装,例如像 glibc、uclib 或仿生这样的 C 库。LXC 还需要内核版本2.6.32或更高版本。

LXC:虚拟化类型


Linux 容器 (LXC) 提供了一个名义上的操作系统环境,可用于运行特定的 Linux 应用程序或网络服务。它直接使用主机系统的内核,因此不能在非 Linux 机器上运行。用户可以为其容器从大量分发模板中进行选择,包括但不限于 Ubuntu、Fedora、Debian、Red Hat 和 CentOS。

Linux 容器虚拟化

这种类型的容器的主要好处是它们允许我们隔离敏感服务。您可以使用这种类型的虚拟化为恶意软件分析、道德黑客或需要独立主机的任务创建环境。然而,这些只是预期的目的。因此,您还可以运行通常在 Linux 机器上运行的任意服务。这与 Docker 以应用程序为中心的方法形成鲜明对比。

LXC:工具支持


强大的工具支持对于管理云应用程序和独立服务至关重要。LXC 提供了一套丰富的工具,几乎与您的传统 Linux 机器相同。因此,您无需安装花哨的管理工具来管理您的 LXC 容器。您可以使用任何标准的 Linux 包,例如 ssh、htop、iptables 和Linux Cron jobs。这使管理员可以轻松管理和自动化容器化服务。

LXC 工具

此外,lxc cli 提供了一套全面的工具,用于动态创建、运行和管理 LXC 容器。您将学习如何安装它并使用本指南中的基本功能。此外,您还可以通过使用 LXD 工具链来使用其他工具。我们将在后续章节中详细讨论 LXD。总的来说,LXC 不会限制用户使用标准 Linux 软件包的能力,同时仍然提供专门的工具。

LXC:生态系统


LXC 生态系统实际上与 Linux 的生态系统相同。这使得开始使用 Linux 容器比使用 Docker 或 rkt 更容易。由于我们可以在这些容器中安装和运行所有标准的 Linux 软件包,因此易于配置和维护。因此,当您发现不需要 Kubernetes 和 Swarm for LXC 等其他工具时,请不要不知所措。

LXC:易用性


从 Linux 虚拟机迁移到容器化平台的主要原因之一是提高了易用性。LXC 通过完全消除安装单体包的需要,在这方面领先了整整一步。这不仅提高了生产力,而且使工作流程更容易处理。LXC 容器带有单独的 init 系统,它们负责系统配置,同时保持轻量级的资源占用。

此外,流畅的用户体验和成熟的生态系统使LXC成为远比传统虚拟机更好的选择。您可以在几分钟内启动一个 LXC 容器并在其中运行您最喜欢的 Linux 发行版。安装和管理 Linux 应用程序就像键入一些日常命令一样简单。因此,如果您不想学习一整套新工具,但仍然能够运行独立的服务,那么 LXC 容器是一个很好的选择。

LXC:人气


毫无疑问,Linux 容器不如 Docker 那样受欢迎。这源于一些简洁的设计选择,其中包括无法运行 Windows 或 Mac OS 环境等。Docker 比 LXC 更轻量级,因此更具可扩展性。然而,LXC 比 Docker 古老得多,它的容器比 Docker 更加独立。

此外,LXC 非常适合创建恶意软件分析实验室等测试环境。这使得它在定期处理敏感项目的高级 IT 专业人员中更受欢迎。LXC 在开发和维护具有长生命周期的应用程序的行业中也享有更大的知名度。总体而言,尽管与 Docker 或 rkt 相比,它不那么受欢迎,但 LXC 提供了更高的安全性和易维护性。

LXC:性能


正如我们已经说过的,人们在虚拟机上使用容器化平台的主要原因之一是减少了资源负载。反过来,这又带来了卓越的性能。LXC 提供的密度是 KVM(基于内核的虚拟机)等传统虚拟机的 10 倍以上。这意味着与 KVM 来宾机器相比,您可以在单个 Linux 主机上运行多达 10 倍的容器。

LXC 性能图

此外,管理程序也容易出现不必要的延迟问题。与 KVM 相比,LXC 将延迟降低到 57%。此外,LXC 容器的加载速度比虚拟机管理程序支持的虚拟模拟器快得多。例如,LXC 实例的启动速度比 KVM 快 94%。因此,如您所见,LXC 通过减少资源负载和延迟显着提高了性能。更快的加载时间提供了流畅的用户体验。

LXC:集成


Linux 容器的一个主要优点是它们与现有软件的集成非常好。您不仅可以将传统的 Linux 应用程序与 LXC 一起使用。例如,我们可以同时使用 LXC 和 Docker 作为彼此的补充。这意味着,您可以简单地将 Docker 微服务托管在 LXC 实例中,以便为它们提供更好的隔离性和类似 VM 的特性。这使得运行和管理 Docker 应用程序非常方便。

此外,它还消除了仅运行Linux 原生应用程序的限制。因此,我们可以轻松地在 Windows 或 Mac 上创建一个 Docker 微服务,并在 Linux 容器内运行它。这是一个非常巧妙的方法。LXC 也适用于流行的云计算平台OpenStack。它被大量行业领导者使用,通常部署为 IaaS(基础设施即服务)。这使得部署和管理云应用程序比以往更容易。

LXC:迁移


迁移对于许多管理员来说至关重要,LXC 在这方面提供了足够的支持。将 Linux 容器从一台主机迁移到另一台主机的方法不止一种。您还可以执行实时迁移,但有一些限制。将容器迁移到不同平台的最简单方法是在目标机器上进行备份和恢复,无论是物理上的还是通过 ssh 远程的。

LXC 迁移

您还可以使用 LXD API 和 Simplestreams 协议迁移容器。我们将在下一节中讨论 LXD。因此,如果您还不知道这一点,请不要担心。我们不会详细介绍迁移过程的每个步骤。也许我们会在不同的指南中介绍这一点。现在,您可以在Ubuntu 网站上找到有关实时迁移的更多信息。LXC 的首席开发人员 Stéphane Graber 也在他的网站上介绍了LXC 迁移

LXC:支持


与任何新平台一样,企业支持非常重要。值得庆幸的是,LXC 在这方面提供了一流的服务。因此,无论您将 Linux 容器用于个人还是商业目的,您都可以保证在需要时获得额外的支持。此外,由于 LXC 是由 Canonical 开发的,Canonical 是 Ubuntu 和其他流行开源软件背后的公司。因此,服务的质量尽可能好。

Canonical 还为希望将 LXC 用于其云原生应用程序的公司提供商业支持。但是,它也适用于 Ubuntu LTS 版本。LXC 2.0 和 3.0 版是长期支持版本。因此,如果您想在所有平台上拥有稳定的容器,您应该坚持使用这些版本。对其他分发模板的支持通常取决于该特定分发。

LXD:入门


LXC 最初是作为一个用户空间接口,提供对 Linux 内核的内置遏制功能的访问。它完全有能力完成它的任务。然而,随着Docker及其强大生态系统的出现,开发人员将注意力转移到开发更成熟的平台上。结果是 LXD,一个强大的容器管理系统,它可以提供类似虚拟机的体验,但使用 LXC 容器。

LXD 简介

LXD 基于镜像,很像 Docker 镜像。它还实现了一个简单而强大的 REST API,可以轻松地与服务进行交互。该 API 使用 Unix 套接字与本地系统连接,也可以通过标准网络协议进行远程连接。

LXD 的一些功能包括增强的安全性、可扩展性、用户体验、实时迁移、高级资源控制、网络管理和存储管理。总的来说,LXD 是 LXC 的补充,而不是替代品。它在引擎盖下使用 LXC 并简单地去除低级细节。

安装和使用 LXC


我们已经详细讨论了 Linux 容器的优点。现在,是时候动手并开始使用这项出色的技术了。但首先,您需要在您的机器上安装 LXC。

我们正在展示如何在标准 Linux 机器上安装 LXC。您将学习如何在 Linux 中安装 LXC 并使用 CLI 创建容器。只需打开您最喜欢的Linux 终端模拟器并输入以下命令。

$ sudo apt-get install lxc

这将在您的本地机器上安装 lxc CLI。完成此操作后,您将可以访问构建和运行容器所需的所有 lxc 命令以及分发模板。您现在可以使用以下简单命令创建基本容器。

$ lxc-create -t​​ <模板> -n <容器名称>

-t标志指定模板的名称,和-n标志指定容器的名称。此命令将根据给定的分发模板创建容器。使用以下命令显示所有可用模板的列表。

$ ls /usr/share/lxc/templates/

因此,以下命令使用 Alpine 模板创建一个名为 test-container 的容器。

$ lxc-create -t​​ alpine -n​​ 测试容器

这将继续下载 Alpine 安装所需的文件。这应该需要一段时间,完成后将显示默认用户和密码。现在,您可以使用以下命令启动容器。

创建一个 Linux 容器

$ sudo lxc-start -n 测试容器

使用下一个命令使用默认用户名和密码连接此容器。

$ sudo lxc-console -n 测试容器

这会将您连接到正在运行的容器。使用Ctrl+a+q组合键断开与此容器的连接。您还可以使用以下命令以 root 用户身份直接连接到容器。

$ sudo lxc-attach -n 测试容器

使用以下命令查看此容器的一些信息。

连接到 LXC 实例

$ sudo lxc-info -n 测试容器

它将显示容器的名称及其状态、PID、IP 地址、内存使用情况、CPU 使用情况等。如果您启动了多个容器,您可以使用以下命令查看它们的列表。

$ sudo lxc-ls

要停止特定容器,请使用以下命令。

$ sudo lxc-stop -n 测试容器

如果不再需要容器,也可以从系统中删除它。为此,请使用以下命令。

停止并删除容器

$ sudo lxc-destroy -n 测试容器

这将从您的主机环境中擦除测试容器及其所有配置。有关每个可用命令的更多详细信息,请转到LXC 文档页面

安装和使用 LXD


正如我们已经讨论过的,LXD 是 LXC 的包装器,带有一系列添加的功能。它本质上是一个基于镜像的 Linux 容器管理系统。您可以使用以下命令安装 lxd。

$ sudo snap install lxd

如果安装 LXD,则无需单独安装 LXC。除了 snap 包,LXD 也可以作为 Debian 包使用。您也可以从源代码安装它。现在,您需要做一些配置工作。第一个是将/snap/bin/lxd 添加到系统的$PATH中。

$ echo 'export PATH="/snap/bin/lxd:$PATH"' >> ~/.bashrc
$ 源 ~/.bashrc

您现在需要初始化 lxd 配置。只需运行以下Linux 终端命令即可执行此操作。

初始化 lxd

$ sudo lxd 初始化

它会问你一堆选项。您现在可以选择默认的。配置完成后,您现在可以创建您的第一个容器。LXD 使用镜像创建容器实例。下面的命令显示了可用图像存储库的列表。您可以添加新的图像源以及在本地构建它们。现在,我们将坚持使用官方遥控器。

$ sudo lxc 启动图片:alpine

此命令将使用 alpine 映像创建一个实例。这是一个相当轻量级的图像,非常适合我们的目的。如果需要,您可以使用其他图像。现在,您可以使用以下命令为这个新创建的容器获取 shell。

$ sudo lxc exec 测试容器/bin/sh

如果您已经基于 Ubuntu 映像创建了容器,请将/bin/sh替换为/bin/bash以调用 bash shell。只要容器镜像支持,您也可以使用任何标准的 Linux shell。您也可以在容器内运行命令而无需连接到 shell。

使用 lxd 连接到 Linux 容器

$ sudo lxc exec test-container -- ip a

这将使用Linux ip 命令打印容器接口的 ip 地址。最后,您可以使用以下命令停止测试容器。

$ sudo lxc 停止测试容器

LXD 支持许多用于 Linux 容器的附加命令。前往LXD 文档页面了解更多详情。

停止和删除 Linux 容器

结束的想法


Linux 容器是在没有任何管理程序的情况下实现轻量级 VM 的好方法。这使它们具有高度的可扩展性和资源友好性。此外,LXC 还提供了一种可行的方法来开发云原生应用程序。LXC 容器和 Docker 容器之间的主要区别在于 LXC 以操作系统为中心,而 Docker 容器以应用程序为中心。

因此,如果您正在寻找构建个人实验室环境或强大的云就绪服务,请考虑 LXC 比 Docker 或 rkt 更好的选择。尽管如此,Docker 仍然是应用程序虚拟化的绝佳选择。因此,如果您想尝试 Docker,请查看我们的日常 Docker 命令指南。

  • 2
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值