当前位置: 首页>>技术教程>>正文


Ubuntu 16.04上的LXD容器入门

, ,

为什么选择LXD?

容器在Linux世界中现在很热门已经不是什么秘密了。它们正在迅速成为云的骨干,并使DevOps的梦想成真。即便如此,乍一看,在一个容易被Docker统治的世界中,Canonical为Ubuntu开发一个新的容器系统似乎有点多余。那么,为什么他们这样做呢?填补传统虚拟机和Docker之间的中间地带。 Canonical自己说:“通过将容器的速度和密度与传统虚拟机的安全性相结合,Canonical的LXD是Linux的下一代容器管理程序。”不仅如此,Docker容器还可以在LXD容器中运行,这为潜在的容器配置增加了新的维度。

LXD通过其自己的工具集对现有LXC Linux容器管理程序进行了增强,与原始项目有着相似的关系,就像Ubuntu与Debian一样,目的是采用现有的出色软件并对其进行简化以使其易于使用。在Canonical最新的Ubuntu LTS版本16.04上,LXD高度集成,易于使用,简洁明了的CLI工具使容器创建和管理变得无缝。

最初设定

在Ubuntu 16.04上使用LXD入门非常容易。 Canonical将安装压缩到一个软件包中,从而使该安装成为一个命令安装。一个简单的sudo apt-get install lxd将获得入门所需的一切。

Install LXD with apt-get install lxd

为了将用户添加到“ lxd”组,以便能够在不重新启动的情况下执行所需的命令,请运行newgrp lxd。在那之后,将很清楚地进行LXD虚拟机管理程序的设置。跑步sudo lxd init开始设置过程。

Initializing LXD Setup

初始设置过程包括一系列命令行提示,询问配置LXD虚拟机管理程序所需的基本信息。该过程非常简单,并询问诸如存储类型,IP地址,端口号,密码以及是否桥接的信息。

Basic LXD setup questions

在一系列提示之后,设置将切换到基于文本的界面,其中包含有关LXD虚拟机管理程序的网络配置的一系列问题。该过程将创建带有自定义子网和DHCP的桥接IPv4和IPv6网络。这样,LXD可以充当部署在其上的所有容器的虚拟路由器,并为这些虚拟网络提供单点配置。

显然,这是LXD成为“两全其美”解决方案的时代之一。当然,Canonical提供Debian风格的配置菜单也很不错,以逐步完成该过程,并且几乎可以轻松完成。配置完成后,它将转储回命令行并提供一条简短的消息,说明已成功完成配置。

LXD success message

LXD图像和容器

设置容器

像Docker一样,LXD是基于映像的。它提供了获取图像的三个主要选项。远程,内置和本地导入。 LXD附带了许多远程资源以及本地资源。要查看可用的源,只需运行lxc remote list,您将看到一个方便的命令行表,其中显示了有关当前可用来源的信息。

LXD source listing

就本文而言,本地资源似乎是最好和最简单的选择。提供了干净的Ubuntu映像,这些映像为任何部署提供了一个很好的起点。这是“两全其美”的时刻中的另一时刻。 LXD容器不是为运行单个应用程序而专门设计的精简容器,而是更靠近full-fledged虚拟机。

它们具有命令行访问权限,甚至可以安装软件包。同时,LXD提供了出色的命令行工具来管理容器,甚至可以在容器之间来回推送文件。要启动Ubuntu 16.04容器,只需运行lxc launch ubuntu:16.04 name-of-container。 LXD将获取图像,创建一个容器,然后启动该容器。

Creating a container in LXD

使用LXD容器

使用以下方法可以轻松检查容器的状态lxc list。启动和停止容器非常容易lxc stop name-of-containerlxc start name-of-container

Listing containers in LXD

与Docker等传统容器相比,LXD的明显优势之一是能够编辑正在运行的容器并对其进行更新,而不是打包,部署和放置容器。如果是在主机系统和容器之间传递文件的问题,则LXD具有推和拉命令,允许来回传递文件​​。如果需要更多内容,LXD提供了一个出色的命令行工具来访问正在运行的容器并获取完整的shell。为了访问容器运行的 shell ,lxc exec name-of-container -- /bin/bash

LXD containers have a full filesystem

在容器的 shell 中,有一个完整的Linux文件系统,并且命令行可以访问与映像捆绑在一起或以后安装在容器上的任何工具。这允许LXD容器运行更新和多个应用程序,包括Docker。这样,DevOps工程师可以部署运行数据库和Web服务器以及Docker的LXD容器,以及在Docker容器中运行的多个Web应用程序。当然,这只是许多可能性中的一种,但是这里的关键是LXD在方程式中增加了另一层,并在配置软件堆栈时提供了更大的灵活性。

结论

从LXD的这一最基本的试验中可以清楚地看到,Canonical确实达到了他们的目标,即在完整的Linux虚拟化和Docker容器之间建立了明确的中间地带。 LXD是DevOps工程师应认真考虑将其添加到其工具箱中的工具。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/11338.html,未经允许,请勿转载。