如何在Fedora Linux服务器上安装和设置LXD

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

如何在Fedora Linux上安装和设置LXD?
如何使用LXD创建我的第一个VM?

Linux容器是Linux操作系统的操作系统级虚拟化的实现。

LXD是系统容器管理器。
您会获得与虚拟机相似的体验,但是会使用Linux容器。
您可以使用LXD运行各种Linux发行版。
该页面显示了如何在Fedora Linux服务器上设置,使用LXD和创建您的第一个VM。
最后,您将学习如何将流量从Internet路由到容器。

在Fedora Linux上运行LXD的要求

  • 在裸机上或在云中运行的Fedora Linux服务器。我使用Fedora Linux版本30/31/32进行了测试。
  • 在Fedora上安装和配置的快照

让我们详细了解在Fedora Linux服务器上安装和设置LXD的所有步骤。

步骤1安装对齐

要安装捕捉的软件包,请输入以下dnf命令:

sudo dnf install snapd

如何在Fedora Linux上安装snapd

您必须使用ln命令设置符号链接,执行:

sudo ln -s /var/lib/snapd/snap /snap
snap version

输出示例:

snap    2.45.3.1-1.fc32
snapd   2.45.3.1-1.fc32
series  16
fedora  32
kernel  5.7.11-200.fc32.x86_64

步骤2在Fedora Linux服务器上安装和设置LXD

执行以下快照命令:

## first restart snapd using the systemctl command ##
sudo systemctl restart snapd.service
sudo snap install lxd

验证LXD安装

确保在Fedora Linux上启用了lxd服务:

$ sudo snap enable lxd
$ sudo snap services lxd
Service     Startup  Current
lxd.daemon  enabled  active

如果未激活,请启动:

sudo snap start lxd

将名为Hyman的Linux用户添加到lxd组

执行以下usermod命令(在Fedora Linux上,可以使用实际用户名随意替换用户名" Hyman"):

sudo usermod -a -G lxd Hyman
id Hyman
newgrp lxd

在此阶段注销并重新登录(如果未激活会话)

logout

步骤3为VM配置LXD网络和存储

执行以下命令:

lxd init

我建议您使用新的后端(例如ZFS,BTRFS或LVM)以及基于DHCP的IP网络,以简化每个VM的设置。
因此,您可以使用新后端支持的快照和其他高级功能。
您可能会收到如下警告:

警告:尚不完全支持cgroup v2,请进行部分限制

对cgroups v2的Currenlty支持正在开发中,但尚未推出。
因此,您需要在Fedora Linux 32上忽略此警告。

lxd验证

确保lxc客户端正在与LXD守护进程通信:

lxc list

列出所有可用的Linux LXD(Linux容器)VM镜像

lxc image list images:

(点击放大)

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

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

步骤4.在Fedora上创建第一个LXD VM

现在是时候创建和使用您的第一个容器了。
要使用镜像创建和启动容器,请使用启动命令:

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

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

CentOS Linux 7和8容器

lxc launch images:centos/7/amd64 cenots-7-vm
lxc launch images:centos/8/amd64 cenots-8-vm

Fedora Linux 32容器

lxc launch images:fedora/32/amd64 fedora-32-vm

OpenSUSE Linux 15.2 Continer

lxc launch images:opensuse/15.2/amd64 opensuse-15-2

Gentoo Linux容器

lxc launch images:gentoo/amd64 gentoo-linux-vm

Arch Linux

lxc launch images:archlinux/amd64 arch-linux-vm

Ubuntu Linux LTS 18.04

lxc launch images:ubuntu/18.10/amd64 ubuntu-nginx-vm

Debian Linux 9.x

lxc launch images:debian/9/amd64 debian-nfs-server-vm

Debian Linux 10.x版

lxc launch images:debian/10/amd64 debian-10-vm
lxc list

输出示例:

+--------------+---------+---------------------+----------------------------------------------+------------+-----------+
|     NAME     |  STATE  |        IPV4         |                     IPV6                     |    TYPE    | SNAPSHOTS |
+--------------+---------+---------------------+----------------------------------------------+------------+-----------+
| debian-10-vm | RUNNING | 10.205.77.80 (eth0) | fd42:400:b94d:ad98:216:3eff:fe7e:1ec5 (eth0) | PERSISTENT |           |
+--------------+---------+---------------------+----------------------------------------------+------------+-----------+

如何列出我所有的容器/VM

列出现有容器:

lxc list --fast
lxc list | grep RUNNING
lxc list | grep STOPPED

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

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-7-vm -- date
lxc exec ubuntu-nginx-vm -- ip r
lxc exec fedora-30-vm -- dnf update
lxc exec debian-nfs-server-vm -- cat /etc/debian_version

如何登录到我的容器/VM

要在名为debian-nfs-server-vm的容器中获得登录并获得shell访问,请执行:

lxc exec debian-nfs-server-vm bash

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

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

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

# exit

如何启动/停止/重新启动我的容器

lxc start containerName # <--- start it
lxc stop containerName # <--- stop it
lxc restart containerName # <--- restart it
lxc stop ubuntu-nginx-vm
lxc start ubuntu-nginx-vm
lxc restart ubuntu-nginx-vm

如何删除我的容器

lxc stop vmName && lxc delete vmName
lxc stop ubuntu-nginx-vm && lxc delete ubuntu-nginx-vm

获取有关正在运行的容器的信息

lxc info
lxc info containerName
lxc info ubuntu-nginx-vm

步骤5将传入连接转发到Linux容器VM

首先在ubuntu-nginx-vm中安装Nginx服务器:

lxc exec ubuntu-nginx-vm bash
apt update && apt upgrade && apt install nginx
systemctl enable nginx
systemctl status nginx
### update/create the default html file
cat /var/www/html/index.nginx-debian.html

示例文件:

<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx running on LXD VM!</title>
</head>
<body>
<h1><h1>Welcome to nginx running on LXD VM!</h1>
</body>
</html>

最后从LXD vm注销:

# logout

查找ubuntu-nginx-vm IP地址:

lxc list ubuntu-nginx-vm

输出示例:

+-----------------+---------+---------------------+------+------------+-----------+
|      NAME       |  STATE  |        IPV4         | IPV6 |    TYPE    | SNAPSHOTS |
+-----------------+---------+---------------------+------+------------+-----------+
| ubuntu-nginx-vm | RUNNING | 10.75.139.74 (eth0) |      | PERSISTENT | 0         |
+-----------------+---------+---------------------+------+------------+-----------+

您需要将端口80上的所有传入流量重定向/转发到Fedora Linux 28公共IP地址(例如104.20.187.5)到LXD私有IP地址10.75.139.74。

查找默认的防火墙区域

sudo firewall-cmd --get-default-zone
`FedoraServer`

打开FedoraServer区域的端口80

sudo firewall-cmd --zone=FedoraServer --add-service=http --permanent

将端口80转发到LXD服务器10.75.139.74端口80

sudo firewall-cmd --permanent --zone=FedoraServer --add-forward-port=port=80:proto=tcp:toport=80:toaddr=10.75.139.74

重新加载fireall

sudo firewall-cmd --reload

测试一下

打开浏览器并输入url:

http://104.20.187.5