如何在CentOS Linux 7.x Server上设置和使用LXD

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

如何在CentOS Linux 7.x上安装,配置和设置LXD?

说明:Linux容器提供的环境与您从VM获得的环境尽可能接近,但没有运行单独的内核并模拟所有硬件所带来的开销。
您可以运行自己喜欢的Linux发行版,例如Debian,Ubuntu,Arch,Gentoo,CentOS等。

LXD不是LXC的重写。LXD通过liblxc及其Go绑定使用LXC。
本教程展示了如何在CentOS Linux 7.x服务器上设置和使用LXD。

在CentOS Linux 7.x上设置和使用LXD的过程

  • 在CentOS上安装snapd
  • 在CentOS Linux上安装lxd
  • 配置LXD存储,网络和其他内容
  • 创建您的第一个虚拟机

步骤1更新CentOS 7.x服务器

运行以下yum命令:

$ sudo yum update
## reboot Linux box if kernel updated ##
$ sudo reboot

步骤2在CentOS 7.x上配置EPEL仓库

在CentOS Linux和RHEL 7.x上安装EPEL仓库的命令:

$ sudo yum install epel-release
$ sudo yum update

步骤3如何为CentOS Linux启用和配置COPR存储库

执行以下yum命令:

$ sudo yum install yum-plugin-copr
$ sudo yum copr enable ngompa/snapcore-el7

步骤4安装LXD

在CentOS 7 Linux上安装LXD:

$ sudo yum install snapd
$ sudo systemctl enable --now snapd.socket

步骤5为LXD配置CentOS Linux内核

您需要使用grubby命令。
它是一个命令行工具,用于更新和显示有关各种体系结构特定的引导程序的配置文件的信息:

$ grubby --args="user_namespace.enable=1" --update-kernel="$(grubby --default-kernel)"
$ grubby --args="namespace.unpriv_enable=1" --update-kernel="$(grubby --default-kernel)"
$ sudo sh -c 'echo "user.max_user_namespaces=3883" > /etc/sysctl.d/99-userns.conf'
$ sudo reboot

步骤5在CentOS上安装LXD

运行以下命令:

$ sudo snap search lxd
$ sudo snap install lxd
$ sudo ln -s /var/lib/snapd/snap /snap

验证一下:

$ snap list
$ snap services

步骤5配置LXD

首先,您需要将自己添加到LXD组。
将用户添加到Linux组的命令如下:

$ sudo usermod -a -G lxd Hyman

使用id命令进行验证:

$ newgrp lxd
$ id

确保我们可以与lxd服务器对话:

$ lxc list

要在CentOS 7上配置LXD,请运行:

$ lxd init

步骤6建立并启动您的第一个容器

您可以使用以下命令列出所有容器镜像:

$ lxc image list images:
$ lxc image list images: | grep -i centos
$ lxc image list images: | grep -u ubuntu

如何创建和设置第一个容器

要从镜像创建和启动容器,请使用launch命令,如下所示:

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

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

CentOS Linux 7容器

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

要访问VM虚拟机 /容器:

$ lxc list
$ lxc exec centos-db bash

Ubuntu Linux 16.4 xenial LTS VM

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

Fedora Linux 28虚拟机

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

现在,我已经在CentOS 7.x上设置并使用LXD,下一步呢?

列出您的容器:

lxc list

要启动/停止/重新启动容器,请使用:

lxc start container-name
lxc stop container-name
lxc restart container-name

删除容器

lxc delete container-name
lxc delete nginx-c1

获取有关您的容器的信息:

$ lxc info container
$ lxc info centos-db

设置iptables规则以重定向流量(在主机上执行命令)

语法如下,将来自公共IP 104.20.186.5的443的流量重定向到容器IP 10.86.112.210:443

iptables -t nat -I PREROUTING -i eth0 -p TCP -d 104.20.186.5 --dport 443 -j DNAT --to-destination 10.86.112.210:443

CentOS使用了防火墙。
要查找默认的防火墙区域,请运行:

$ sudo firewall-cmd --get-default-zone
`public`

为公共区域打开端口443

$ sudo firewall-cmd --zone=public --add-service=https --permanent

将端口443转发到LXD服务器10.86.112.210:443

$ sudo firewall-cmd --permanent --zone=public --add-forward-port=port=443:proto=tcp:toport=443:toaddr=10.86.112.210

重新加载fireall

$ sudo firewall-cmd --reload

测试一下。
打开浏览器并输入url:

https://104.20.186.5

lxc命令列表

命令描述
alias管理命令别名
cluster管理集群成员
config管理容器和服务器配置选项
console追加到容器控制台
copy在LXD实例内部或之间复制容器
delete删除容器和快照
exec执行容器中的命令
export导出容器备份
file管理容器中的文件
help有关任何命令的帮助
image管理镜像
import导入容器备份
info显示容器或服务器信息
launch从镜像创建并启动容器
list列出容器
move在LXD实例内部或之间移动容器
network管理容器并将其追加到网络
operation列出,显示和删除后台操作
profile管理个人资料
publish将容器发布为镜像
remote管理远程服务器列表
rename重命名容器和快照
restart重新启动容器
restore从快照恢复容器
snapshot创建容器快照
start启动容器
stop停止容器
storage管理存储池和卷
version显示本地和远程版本

查看命令帮助:

lxc --help
lxc command --help
lxc stop --help