如何在Fedora Linux服务器上安装和设置LXD
如何在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