使用apt在Ubuntu 20.04 LTS上安装LXD

时间:2020-01-09 10:40:58  来源:igfitidea点击:

如何在Ubuntu 20.04 LTS Linux上安装LXD纯容器管理程序,以惊人的速度运行未修改的Debian/Ubuntu/CentOS/Fedora/Arch Linux操作系统?
如何在Ubuntu Linux服务器上设置和使用LXD?
如何在Ubuntu云服务器上安装LXD?

说明:LXD容器系统由Ubuntu团队支持和创建。
与Vmware ESX相比,它的性能提高了25-30%。
密度为10倍,零延迟。
无需修改应用程序或管理流程,就可以使用LXD将Linux VM直接移动到容器中。
您可以在容器中运行CentOS,Arch Linux,Fedora Linux,OpenSUSE,Gentoo,Ubuntu,Debian和许多其他Linux发行版。
本教程显示如何在Ubuntu 20.04 LTS上安装和配置LXD。

为什么在Ubuntu 20.04上使用LXD?

LXD是一种容器体验,可提供ReST API来管理LXC容器。

LXD可以做以下事情:

  • 非特权容器(通过设计确保安全)
  • 可扩展
  • 实时迁移
  • 用于CPU,内存,磁盘/网络I/O,内核模块等的高级资源控制
  • 硬件直通支持GPU,USB,NIC,磁盘等
  • 运行容器
  • 更新容器
  • 集群支持
  • 易于管理
  • 在容器内安装其他Linux发行版
  • 管理容器资源,例如存储卷,映射目录,内存/磁盘I/O限制,联网等

在Ubuntu 20.04 LTS上安装和设置LXD

让我们查看设置LXD的所有分步说明:

步骤1在Ubuntu 20.04 LTS Linux服务器上安装LXD

确保使用apt或apt-get命令在Ubuntu上安装了所有安全更新,执行:

sudo apt update
sudo apt upgrade

要安装LXD的稳定分支,请运行以下apt命令或snap命令:

sudo apt install lxd

为了进行测试,目的是选择最新版本,否则在下一个屏幕上选择4.0作为稳定服务器

我选择4.0版快照轨道。

另外,我们可以直接使用snap命令,如下所示:

sudo snap install lxd --channel=4.0/stable

步骤2将用户添加到LXD组以进行管理

无需成为root用户即可管理LXD守护程序。
要管理LXD服务器,请在Ubuntu Linux上使用adduser命令将用户名添加到lxd组:

sudo adduser {USERNameHere} lxd
sudo adduser Hyman lxd
sudo adduser $USER lxd

组成员资格仅在下一次登录或新的ssh会话启动时应用。
因此,您需要关闭并重新打开用户/ssh会话,或者使用以下newgrp命令立即申请组成员身份:

newgrp lxd

使用id命令验证成员资格详细信息:

id

使用lxc命令对其进行测试:

lxc list

看起来不再有权限错误和无特权的用户管理LXD

步骤3设置和配置LXD网络和存储选项

现在我们已经安装了LXD,是时候设置LXD服务器了。
您必须配置网络和存储选项,例如目录,ZFS,Btrfs等,然后执行:

sudo lxd init

接下来,您必须回答有关如何配置LXD服务器的一系列问题,包括存储和联网选项。
这是我为ZFS和10.105.28.1/24 NATed子网设置的示例会话。
您可以根据需要随意选择选项:我们可以通过输入以下命令来验证信息:

lxc profile list
lxc profile show default
lxc network list
lxc network show lxdbr0
lxc storage list
lxc storage show theitroadzfs

Gif.01:探索我们的LXD服务器存储和网络配置文件

步骤4列出各种Linux发行版的内置LXD镜像

要列出所有LXD镜像,请运行:

lxc image list images:
lxc image list images: | grep -i centos
lxc image list images: | grep -i ubuntu
lxc image list images: | grep -i debian

步骤5创建您的第一个Linux容器

创建第一个容器很简单。
语法为:

lxc launch images:{distro}/{version}/{arch} {container-name-here}

Alpine Linux 3.11容器

您的容器在这里称为alpine-c1:

lxc launch images:alpine/3.11/amd64 alpine-c1

CentOS Linux 8容器

lxc launch images:centos/8/amd64 cenots-8-c2

Ubuntu Linux 16.04或18.04或20.04 LTS容器

lxc launch images:ubuntu/xenial/amd64 ubuntu-xenial-c3
lxc launch images:ubuntu/bionic/amd64 ubuntu-bionic-c4
lxc launch images:ubuntu/focal/amd64 ubuntu-focal-c5

Debian Linux 9.x Stretch或10.x容器

lxc launch images:debian/stretch/amd64 debian-9-c6
lxc launch images:debian/10/amd64 debian-10-www

Arch Linux容器

lxc launch images:archlinux/amd64 arch-c7

Gentoo Linux容器

lxc launch images:gentoo/amd64 gentoo-c8

Fedora Linux 31容器

lxc launch images:fedora/31/amd64 fedora-31-c9

OpenSUSE Linux 15.0容器

lxc launch images:opensuse/15.1/amd64 opensuse15-1-c10

Oracle Linux 8.x虚拟机

lxc launch images:oracle/8/amd64 oracle-8-c11

步骤6使用lxc CLI管理基于LXD的容器

让我们深入了解管理容器的基本命令

列出Linux容器实例

我们可以使用以下语法和grep命令/egrep命令作为管道列出现有容器:

lxc list --fast
lxc list | grep RUNNING
lxc list | grep STOPPED
lxc list | grep -i opensuse
lxc list "*c1*"
lxc list "*c2*"
lxc list

如何在容器中执行/运行指定的命令

我们使用exec命令在容器中运行或执行命令,如下所示:

lxc exec containerName -- command
lxc exec containerName -- /path/to/script
lxc exec containerName --env EDITOR=/usr/bin/vim -- command
### run date, ip a, ip rm and other commands on various containers ###
lxc exec cenots-8-c2 -- date
lxc exec cenots-8-c2 -- ip a
lxc exec ubuntu-focal-c5 -- ip r
lxc exec fedora-31-c9 -- dnf -y update
lxc exec debian-10-www -- cat /etc/debian_version

如何在容器中访问bash shell

要在名为debian-10-www的容器中获得登录/shell访问,请执行:

lxc exec {container-name} {shell-name}
lxc exec debian-10-www bash
lxc exec alpine-c1 sh

现在,您可以运行命令或安装软件包。
例如,在容器内使用apt命令/apt-get命令:

# cat /etc/*issue*
# apt update
# apt upgrade

只需执行exit即可返回主机:

# exit

启动我的容器命令

lxc start {container-name}
lxc start oracle-8-c11

停止我的容器命令

lxc stop {container-name}
lsc stop alpine-c1

重新启动我的容器

$ lxc restart {container-name}
lxc restart gentoo-c8

删除LXD容器

命令如下。
请小心,因为LXD容器会立即删除,没有任何确认提示。
换句话说,请始终保留备份:

lxc delete {container-name}
lxc delete ubuntu-xenial-c3

删除容器时可能会出现以下错误:

容器当前正在运行,请先停止运行或通过。

要解决此问题:

lxc stop ubuntu-xenial-c3 && lxc delete ubuntu-xenial-c3

如何在LXD服务器和容器上显示信息?

执行以下命令:

lxc info
lxc info {container-name}
lxc info opensuse15-1-c10

从容器中拉出文件

lxc file pull {continer-nane}/{path/to/file} {/path/to/local/dest}
lxc file pull ubuntu-xenial-c3/var/www/nginx/app/config.php .

将文件推送到容器

lxc file push {/path/to/file} {continer-nane}/path/to/dest/dir/
lxc file push config.php ubuntu-xenial-c3/var/www/nginx/app/

步骤7获得有关lxc命令的帮助

获得帮助很容易:

lxc --help
lxc {command} --help
lxc list --help