如何使用Snap在CentOS 7上部署LXD
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容器。