如何使用Snap在CentOS 7上部署LXD

时间:2020-02-23 14:31:32  来源:igfitidea点击:

LXD是基于非常强大的REST构建的下一代系统容器管理器,可提供类似于虚拟机的用户体验,但使用Linux容器。 LXD使用预制的Linux镜像,这些镜像可用于许多Linux发行版。

在本教程中,我们将介绍在CentOS 7服务器/台式机上安装和使用LXD的简单步骤。安装将使用Snap,它已在CentOS 7教程中的如何安装Snapd和Snap应用程序中进行了介绍。

LXD的特点

在LXD官方上,提到了LXD的最大功能:

通过设计确保安全(无特权的容器,资源限制等等)可扩展(从成千上万个计算节点上的容器中获得)直观(简单,清晰的API和清晰的命令行体验)基于图像(每天发布各种Linux发行版) )支持跨主机容器和镜像传输(包括使用CRIU的实时迁移)高级资源控制(CPU,内存,网络I/O,块I/O,磁盘使用率和内核资源)设备直通(USB,GPU,Unix字符)并阻止设备,NIC,磁盘和路径)网络管理(桥创建和配置,跨主机隧道)存储管理(支持多个存储后端,存储池和存储卷)

如何在带有Snap的CentOS 7上安装LXD

现在,按照以下步骤开始在CentOS 7上安装LXD。

在CentOS 7上安装快照

我们需要安装snapd,它将提供用于安装LXD软件包的snap命令行工具。遵循以下教程在CentOS上安装快照:如何在CentOS 7上安装快照和Snap应用程序

安装完快照后,请转到

配置内核参数

LXD需要某些内核选项才能在系统上启用。通过在终端上运行以下命令来配置它们。以root用户身份运行这些命令。

grubby --args="user_namespace.enable=1" --update-kernel="$(grubby --default-kernel)"
grubby --args="namespace.unpriv_enable=1" --update-kernel="$(grubby --default-kernel)"
echo "user.max_user_namespaces=3883" > /etc/sysctl.d/99-userns.conf

进行更改后,我们需要重新引导系统。

sudo reboot

系统启动后,继续执行

安装ZFS(可选)

如果要对LXD容器使用ZFS,则需要安装它。如果我们不使用ZFS,请跳过此步骤。

sudo yum install http://download.zfsonlinux.org/epel/zfs-release.el7_4.noarch.rpm
sudo yum-config-manager --disable zfs
sudo yum-config-manager --enable zfs-kmod
sudo yum install zfs

在CentOS 7上安装lxd snap

最后,从快照存储安装LXD快照

$sudo snap install lxd
lxd 3.4 from 'canonical' installed

如果网络连接良好,则安装时间应短。我们可以使用以下方法确认软件包的安装:

# snap list
Name        Version    Rev   Developer             Notes
core        16-2.34.3  5145  canonical             core
lxd         3.4        8415  canonical             

# snap services
Snap   Service  Startup   Current
lxd    daemon   enabled   active

启动测试LXD容器

让我们将用户帐户添加到lxd组中,以管理LXD容器而不会发生权限错误。

sudo usermod -aG lxd jmutai
sudo newgrp lxd

使用以下命令配置LXD环境

$sudo lxd init
Would you like to use LXD clustering? (yes/no) [default=no]: 
Do you want to configure a new storage pool? (yes/no) [default=yes]: 
Name of the new storage pool [default=default]: 
Name of the storage backend to use (btrfs, ceph, dir, lvm) [default=btrfs]: 
Create a new BTRFS pool? (yes/no) [default=yes]: 
Would you like to use an existing block device? (yes/no) [default=no]: 
Size in GB of the new loop device (1GB minimum) [default=15GB]: 
Would you like to connect to a MAAS server? (yes/no) [default=no]: 
Would you like to create a new local network bridge? (yes/no) [default=yes]: 
What should the new bridge be called? [default=lxdbr0]: 
What IPv4 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]: 
What IPv6 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]: 
Would you like LXD to be available over the network? (yes/no) [default=no]: 
Would you like stale cached images to be updated automatically? (yes/no) [default=yes] 
Would you like a YAML "lxd init" preseed to be printed? (yes/no) [default=no]:

容器列表应返回一个空列表

# lxc list
+------+-------+------+------+------+-----------+
| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS |
+------+-------+------+------+------+-----------+

通过运行以下命令创建一个测试CentOS 7容器:

# lxc launch images:centos/7/amd64 cent7
Creating cent7
Starting cent7

通过运行以下命令启动Ubuntu容器:

# lxc launch ubuntu:18.04 ubuntu18
Creating ubuntu18
Starting ubuntu18

列出容器:

# lxc list
+----------+---------+-----------------------+----------------------------------------------+------------+-----------+
|   NAME   |  STATE  |         IPV4          |                     IPV6                     |    TYPE    | SNAPSHOTS |
+----------+---------+-----------------------+----------------------------------------------+------------+-----------+
| cent7    | RUNNING | 10.222.191.166 (eth0) | fd42:4c5:f0c7:1550:216:3eff:fe8f:8fdf (eth0) | PERSISTENT |           |
+----------+---------+-----------------------+----------------------------------------------+------------+-----------+
| ubuntu18 | RUNNING | 10.222.191.214 (eth0) | fd42:4c5:f0c7:1550:216:3eff:fe2c:a03 (eth0)  | PERSISTENT |           |
+----------+---------+-----------------------+----------------------------------------------+------------+-----------+

停止,启动,重新启动,删除,检查容器信息

lxc start container
lxc stop container
lxc restart container

使用info命令选项获取有关容器的信息

lxc info container

有关更多命令行选项,请运行

lxc --help
lxc command --help e.g lxc start --help

我们已经从snap成功地在CentOS 7上安装了LXD并创建了一个lxc容器。