在Ubuntu 18.04 LTS上安装LXD纯容器虚拟机管理程序

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

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

说明:LXD容器管理程序由Ubuntu团队支持和创建。
与ESX相比,它的性能提高了25%。
密度为10倍,零延迟。
无需修改应用程序或管理流程,就可以使用LXD将Linux VM直接移动到容器中。

Ubuntus LXD是一个纯容器虚拟机管理程序,它以惊人的速度运行带有VM风格操作的未修改的Linux来宾操作系统。
您可以在容器中运行CentOS,Arch Linux,Fedora Linux,OpenSUSE,Gentoo,Ubuntu,Debian和其他Linux发行版。
本教程显示如何在Ubuntu Linux 18.04 LTS上安装和配置LXD纯容器管理程序。

为什么要使用LXD?

LXD是一个容器管理程序,提供ReST API来管理LXC容器。

LXD可以做以下事情:

  • 运行容器
  • 更新容器
  • 集群支持
  • 在容器内安装其他Linux发行版
  • 管理容器资源,例如存储卷和网络

在Ubuntu 18.04 LTS上设置LXD

在Ubuntu Linux 18.04 LTS上设置和使用LXD的过程如下:

  • 安装lxd
  • 设置和配置LXD网络和存储
  • 创建您的第一个容器
  • 启动一个容器

让我们详细了解所有步骤。

在Ubuntu 18.04 LTS上安装LXD纯容器虚拟机管理程序

在LXD上执行以下apt-get命令或apt命令:

$ sudo sh -c 'apt update && apt upgrade'
$ sudo apt install lxd

如何将用户添加到LXD组以进行管理

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

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

请注意,组成员资格仅适用于登录或新的ssh会话,然后您需要关闭并重新打开用户/ssh会话,或使用以下命令来避免出现问题:

$ newgrp lxd

使用id命令验证它:

$ id

设置ZFS(可选)

我建议您使用ZFS以及基于DHCP的IP网络,以简化每个VM的设置。

ZFS提供了制作快照和其他高级功能的快速选项:

$ sudo apt install zfsutils-linux

有关更多信息,请参见如何在Ubuntu服务器上安装ZFS。

配置LXD存储和网络选项

现在该设置LXD服务器了。
您必须配置网络和存储选项,例如目录,ZFS,Btrfs等:

$ sudo lxd init

您必须回答有关如何配置LXD服务器的一系列问题。
这是一个示例会话:现在已设置并配置LXD。
您可以使用以下命令进行验证:

$ lxc list
$ lxc info | more

创建您的第一个Linux容器

要列出所有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

如何在运行LXD的Ubuntu 18.04 LTS上创建和使用第一个容器

要使用镜像创建和启动容器,请使用启动命令:

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

让我们看一些示例,根据您的需要从各种Linux发行镜像创建和启动容器。

Alpine Linux 3.8 VM

$ lxc launch images:alpine/3.8/amd64 alpine-c1

CentOS Linux 7容器

$ lxc launch images:centos/7/amd64 cenots-c2

Ubuntu Linux 16.04或18.04或20.04 LTS容器

$ lxc launch images:ubuntu/bionic/amd64 ubuntu-nginx-c3
$ lxc launch images:ubuntu/eoan/amd64 ubuntu-nginx-c4
$ lxc launch images:ubuntu/focal/amd64 ubuntu-nginx-c5

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

$ lxc launch images:debian/stretch/amd64 debian9-c4

或者

$ lxc launch images:debian/10/amd64 debian10-www01

Arch Linux容器

$ lxc launch images:archlinux/amd64 arch-c5

Gentoo Linux容器

$ lxc launch images:gentoo/amd64 gentoo-c6

Fedora Linux 30容器

$ lxc launch images:fedora/30/amd64 fedora30-c7

OpenSUSE Linux 15.0容器

$ lxc launch images:opensuse/15.0/amd64 opensuse-stable-c8

Oracle Linux 7.x虚拟机

$ lxc launch images:oracle/7/amd64 oracle7-c9

如何列出我的所有容器?

列出现有容器:

$ lxc list --fast
$ lxc list | grep RUNNING
$ lxc list | grep STOPPED
$ lxc list | grep -i ubuntu
$ 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-c2 -- date
$ lxc exec cenots-c2 -- ip a
$ lxc exec ubuntu-nginx-c3 -- ip r
$ lxc exec fedora28-c7-- dnf update
$ lxc exec debian9-c4 -- cat /etc/debian_version

如何在容器中访问bash shell

要在名为file-server的容器中登录并获得shell程序访问权,请执行:

$ lxc exec debian9-c4 bash

现在,您可以运行命令或安装软件包:

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

要简单地从容器退出,只需执行exit:

# exit

如何启动容器?

使用以下cli启动容器:

$ lxc start containerName
$ lxc start foo
$ lxc start cenots-c2 opensuse-stable-c8

如何停止我的容器?

使用以下语法停止容器:

$ lxc stop containerName
$ lxc stop foo
$ lxc stop cenots-c2 opensuse-stable-c8

如何重新启动容器?

是否出于任何原因想要重新启动容器?
尝试:

$ lxc restart containerName
$ lxc restart foo
$ lxc restart cenots-c2 opensuse-stable-c8

如何删除容器?

该命令是(请谨慎操作,因为LXD容器会在没有任何确认提示的情况下立即删除,即保留备份):

$ lxc delete containerName
$ lxc delete foo
$ lxc delete cenots-c2

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

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

要解决此问题:

$ lxc stop cenots-c2 && lxc delete cenots-c2

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

执行以下命令:

$ lxc info
$ lxc info containerName
$ lxc info opensuse-stable-c8