如何在 CentOS Linux 7.x 服务器上设置和使用 LXD
简介:Linux 容器提供的环境尽可能接近您从 VM 获得的环境,但没有运行单独内核和模拟所有硬件所带来的开销。您可以运行您最喜欢的 Linux 发行版,如 Debian、Ubuntu、Arch、Gentoo、CentOS 等。LXD 是 lxc 的增强版,具有强大的安全性。LXD 不是 LXC 的重写。在底层,LXD 通过 liblxc 及其 Go 绑定使用 LXC。本教程介绍如何在 CentOS Linux 7.x 服务器上设置和使用 LXD。
在 CentOS Linux 7.x 上设置和使用 LXD 的步骤
- 在 CentOS 上安装 snapd
- 在 CentOS Linux 上安装 lxd
- 配置 lxd 存储、网络和其他内容
- 创建第一个 VM
步骤 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 repo 的命令:有关更多信息,
请参阅“如何在 CentOS 和 RHEL 7.x 上安装 EPEL Repo ”。
$ 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 vivek
使用id 命令进行验证:
确保我们可以与 lxd 服务器通信:
要在 CentOS 7 上配置 LXD,请运行:
$ newgrp lxd
$ id
$ lxc list
$ lxd init
步骤 6 - 创建并启动您的第一个容器
您可以使用以下命令列出所有容器映像:
$ lxc image list images:
$ lxc image list images: | grep -i centos
$ lxc image list images: | grep -u ubuntu
如何创建和设置你的第一个容器
要从图像创建和启动容器,请使用启动命令,如下所示:
lxc launch images:{distro}/{version}/{arch} {container-name-here}
让我们看一些示例,根据您的需要从各种 Linux 发行版图像创建和启动容器。
CentOS Linux 7 容器
$ lxc launch images:centos/7/amd64 cenots-db
要访问虚拟机/容器:
$ lxc list
$ lxc exec centos-db bash
Ubuntu Linux 16.4“xenial”LTS 虚拟机
$ 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 使用 firwalld。要查找默认的防火墙区域,请运行:
为公共区域打开端口 443
将端口 443 转发到 LXD 服务器 10.86.112.210:443
重新加载防火墙
测试。启动 Web 浏览器并输入 url:
$ sudo firewall-cmd --get-default-zone
public
$ sudo firewall-cmd --zone=public --add-service=https --permanent
$ sudo firewall-cmd --permanent --zone=public --add-forward-port=port=443:proto=tcp:toport=443:toaddr=10.86.112.210
$ sudo firewall-cmd --reload
https://104.20.186.5
lxc 命令列表
lxc --help
lxc command --help
lxc stop --help
命令 | 描述 |
---|---|
别名 | 管理命令别名 |
簇 | 管理集群成员 |
配置 | 管理容器和服务器配置选项 |
安慰 | 附加到容器控制台 |
复制 | 在 LXD 实例内或之间复制容器 |
删除 | 删除容器和快照 |
执行 | 在容器中执行命令 |
出口 | 导出容器备份 |
文件 | 管理容器中的文件 |
帮助 | 有关任何命令的帮助 |
图像 | 管理图像 |
进口 | 导入容器备份 |
信息 | 显示容器或服务器信息 |
发射 | 从图像创建并启动容器 |
列表 | 列出容器 |
移动 | 在 LXD 实例内或之间移动容器 |
网络 | 管理容器并将其连接到网络 |
手术 | 列出、显示和删除后台操作 |
轮廓 | 管理个人资料 |
发布 | 将容器发布为镜像 |
偏僻的 | 管理远程服务器列表 |
重命名 | 重命名容器和快照 |
重启 | 重启容器 |
恢复 | 从快照还原容器 |
快照 | 创建容器快照 |
开始 | 启动容器 |
停止 | 停止容器 |
贮存 | 管理存储池和卷 |
版本 | 显示本地和远程版本 |
结论
您已设置 CentOS 和其他在 LXD 容器中运行的 VM。您现在可以将容器用作独立的 VM/监狱。您可以使用 iptables/ufw 将流量重定向到容器的特定端口。有关更多信息,请参阅此处和此处的官方页面。
- 在 Ubuntu 16.04 LTS 上安装 LXD 容器管理程序
- 如何在 Fedora Linux 26 上安装和设置 LXC(Linux 容器)
- 在KVM或Xen虚拟机下设置LXD容器
- 列出 LXD(Linux 容器)中的 VM 映像
- 升级由 Ubuntu/Debian 或 CentOS Linux 驱动的 LXD 容器
- 在 Linux 启动时自动启动 LXD 容器
- 重命名 LXD / LXC 容器的命令
- 在配置启动时在 Linux 容器 (LXD) 实例上运行命令
- 在云实例启动时,使用 shell 脚本中的 LXD(Linux 容器)创建 VM
- 将 LXD VM 移动/迁移到 Linux 上的另一台主机
- Fedora 安装并设置 LXD
- CentOS 7.x 安装并设置 LXD 服务器
- 在 Ubuntu 18.04 LTS 上安装 LXD 纯容器管理程序
- 使用 lxc 命令为 LXD 创建快照
- 在 CentOS/RHEL 8 上设置并安装 LXD
- Ubuntu 20.04 LTS 安装并设置 LXD
- 完整备份和恢复 LXD 容器
- 禁用 LXD 桥上的防火墙和 NAT 规则
- 使用 lxc 删除或移除 LXD 容器
- Linux 文件系统错误:事务失败解决方案
- Ubuntu 22.04 LTS 设置 LXD
- Debian 11 设置 LXD