如何在Ubuntu 16.04 LTS上安装LXD容器管理程序

时间:2020-01-09 10:39:23  来源:igfitidea点击:

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

LXD不是LXC的重写。
在幕后,LXD通过liblxc及其Go绑定使用LXC。
在本教程中,您将学习在Ubuntu Linux 16.04服务器上设置和使用LXD。

在Ubuntu上安装LXD

输入以下apt-get命令:

$ sudo apt install lxd

或者

$ sudo apt-get install lxd

为VM配置LXD网络和存储

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

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

以下命令显示所有虚拟机的ZFS设置:

$ sudo zfs list

输出示例:

[sudo] password for Hyman: 
NAME              USED  AVAIL  REFER  MOUNTPOINT
theitroad          744K   461G   192K  /theitroad
theitroad/lxdvms   192K   461G   192K  /theitroad/lxdvms

要设置存储和网络选项,请执行:

$ sudo lxd init

输出示例:

Name of the storage backend to use (dir or zfs) [default=zfs]: 
Create a new ZFS pool (yes/no) [default=yes]? no
Name of the existing ZFS pool or dataset: theitroad/lxdvms
Would you like LXD to be available over the network (yes/no) [default=no]? 
Do you want to configure the LXD bridge (yes/no) [default=yes]?

您需要根据提示配置基于LXD dhcp的网桥。

LXC命令

lxc命令用于与LXD服务器通信。 lxd软件包创建一个新的lxd组,其中包含允许通过本地unix套接字与lxd进行通信的所有用户。
换句话说,用户名必须属于lxd组:

$ id username
$ id Hyman
$ grep lxd /etc/group

输出示例:

lxd:x:110:Hyman

如果Hyman(或任何其他用户)用户不属于lxd组,则当您尝试使用lxc命令时,将收到以下错误消息:

Permission denied, are you in the lxd group?

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

$ newgrp lxd

验证lxc客户端正在与LXD守护程序进行对话:

$ lxc list

如何列出各种Linux发行版的可用镜像?

列出来自默认远程服务器的所有镜像

$ lxc image list images:

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

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

大多数镜像都具有几种别名。
要查看列表,请执行:

$ lxc image alias list images:
$ lxc image alias list images: | grep -i centos
$ lxc image alias list images: | grep -i arch
$ lxc image alias list images: | grep -i debian

如何创建和使用第一个容器

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

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

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

Alpine Linux 3.7 VM

$ lxc launch images:alpine/3.7/amd64 alpine-www

输出示例:

Creating alpine-www
Retrieving image: 100%
Starting alpine-www

CentOS Linux 7虚拟机

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

Ubuntu Linux 16.4 xenial LTS VM

$ lxc launch images:ubuntu/xenial/amd64 ubuntu-nginx

Debian Linux 9.x VM

$ lxc launch images:debian/stretch/amd64 file-server

Arch Linux虚拟机

$ lxc launch images:archlinux/amd64 arch-c1

Gentoo Linux虚拟机

$ lxc launch images:gentoo/amd64 gentoo-c1

Fedora Linux 26和27 VM

$ lxc launch images:fedora/26/amd64 fedora26-c1

或者

$ lxc launch images:fedora/27/amd64 fedora27-c1

OpenSUSE Linux 42.3虚拟机

$ lxc launch images:opensuse/42.3/amd64 opensuse

Oracle Linux 7.x虚拟机

$ lxc launch images:oracle/7/amd64 oracle-proxy-c1

如何列出我的所有容器?

列出现有容器:

$ lxc list --fast
$ lxc list | grep RUNNING
$ lxc list | grep STOPPED
$ lxc list | grep
$ lxc list "*c1*"
$ lxc list "*db*"
$ 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-db -- date
$ lxc exec opensuse -- ifconfig
$ lxc exec ubuntu-nginx -- ip r
$ lxc exec fedora24-c1 -- dnf update
$ lxc exec file-server -- cat /etc/debian_version

如何在容器中访问bash shell?

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

$ lxc exec file-server bash

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

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

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

# exit

如何启动容器?

使用以下cli启动容器:

$ lxc start containerName
$ lxc start foo
$ lsc start centos-db opensuse

如何停止我的容器?

使用以下语法停止容器:

$ lxc stop containerName
$ lxc stop foo
$ lsc stop centos-db opensuse

如何重新启动容器?

重新启动容器:

$ lxc restart containerName
$ lxc restart foo
$ lsc restart centos-db opensuse

如何删除容器?

请谨慎操作,因为LXD容器会在没有任何确认提示的情况下立即删除:

$ lxc delete containerName
$ lxc delete foo
$ lsc delete centos-db

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

The container is currently running, stop it first or pass –force.
容器当前正在运行,请先停止运行或传递–force参数。

要解决此问题,执行以下命令:

$ lxc stop centos-db && lxc delete centos-db

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

如何使用lxc查看LXD容器的内存,cpu,网络使用情况信息,
执行以下命令:

$ lxc info
$ lxc info containerName
$ lxc info cenots-db

我可以在容器中运行OpenSSH服务器吗?

是。
您可以像安装VPS或服务器一样安装和使用openssh-server。
例如:

$ lxc exec centos-db -- yum install openssh-server
$ lxc exec cenots-db -- systemctl start sshd
$ ssh user@centos-db
$ ssh user@centos-db-ip-address-here