更新升级 专属应用 系统故障 硬件故障 电脑汽车 鸿蒙刷机 鸿蒙开发Linux教程 鸿蒙开发Linux命令
当前位置:HMXT之家 > 鸿蒙开发Linux教程 > 在Linux系统上安装和使用LXC/LXD运行Linux容器

在Linux系统上安装和使用LXC/LXD运行Linux容器

更新时间:2023-03-06 10:56:16浏览次数:100+次

本文介绍在Linux系统上安装和使用LXC/LXD运行Linux容器的详细步骤,将以Rocky Linux 8/AlmaLinux 8发行版为例说明。

详细操作方法

步骤1、准备Rocky Linux 8、AlmaLinux 8系统

我们将确保将可用软件包更新为最新可用版本,如下所示:

sudo dnf update

安装安装所需的软件包:

sudo dnf -y install vim curl

按如下方式设置SELinux许可模式:

sudo setenforce 0

sudo sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config

步骤2、在Rocky Linux 8、AlmaLinux 8上添加EPEL存储库

我们需要将EPEL存储库添加到我们的系统中,以便能够在Rocky Linux 8、AlmaLinux 8上安装所需的软件包。

添加EPEL存储库,如下所示:

sudo yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

sudo dnf makecache

步骤3、安装Snap

由于LXD在Snap上可用,我们需要在Rocky Linux 8/AlmaLinux 8系统上安装并启用snapd服务。

安装Snap并安装LXD

使用以下命令在Rocky Linux 8、AlmaLinux 8上安装snap:

sudo dnf -y install snapd

启动并启用snap:

sudo systemctl enable --now snapd.socket

通过创建以下符号链接启用snap支持:

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

步骤4、配置Rocky Linux 8、AlmaLinux 8内核

LXD需要一些内核配置。使用以下命令对内核进行这些配置:

首先切换到根用户:

sudo su -

使用Grubby进行以下配置:

grubby --args="user_namespace.enable=1" --update-kernel="$(grubby --default-kernel)"

grubby --args="namespace.unpriv_enable=1" --update-kernel="$(grubby --default-kernel)"

echo "user.max_user_namespaces=3883" | sudo tee -a /etc/sysctl.d/99-userns.conf

要应用上述内核配置,我们需要重新启动系统:

sudo reboot -i

步骤5、在Rocky Linux 8/AlmaLinux 8上安装LXC/LXD

我们将使用以下命令在系统上安装LXD作为snap包:

sudo snap install lxd

样本输出:

Setup snap "snapd" (14295) security profiles

INFO Waiting for automatic snapd restart...

lxd 4.21 from Canonical installed

为了能够在不使用sudo的情况下运行LXD命令,我们需要将系统用户添加到LXD组,这可以通过运行以下命令来实现:

sudo usermod -aG lxd $USER

newgrp lxd

步骤6、配置LXD

安装LXD完成,然后需要配置LXD,可按以下方法操作。

现在,我们将通过如下所示的设置来配置LXD环境。

首先,初始化LXD:

lxd init

现在继续进行存储池配置。在这里,您可以在LVM和默认brtfs之间进行选择:

Would you like to use LXD clustering? (yes/no) [default=no]:

Do you want to configure a new storage pool? (yes/no) [default=yes]:

Name of the new storage pool [default=default]:

Name of the storage backend to use (btrfs, dir, lvm, ceph) [default=btrfs]: lvm

设置磁盘空间并继续进行更多配置:

Create a new LVM pool? (yes/no) [default=yes]:

Would you like to use an existing empty block device (e.g. a disk or partition)? (yes/no) [default=no]:

Size in GB of the new loop device (1GB minimum) [default=7GB]: 5GB

Would you like to connect to a MAAS server? (yes/no) [default=no]:

Would you like to create a new local network bridge? (yes/no) [default=yes]:

What should the new bridge be called? [default=lxdbr0]:

What IPv4 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]:

What IPv6 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]:

Would you like the LXD server to be available over the network? (yes/no) [default=no]:

Would you like stale cached images to be updated automatically? (yes/no) [default=yes]

Would you like a YAML "lxd init" preseed to be printed? (yes/no) [default=no]:

现在允许lxdbr0网桥通过防火墙:

sudo firewall-cmd --add-interface=lxdbr0 --zone=trusted --permanent

sudo firewall-cmd --reload

步骤7、使用LXC/LXD创建和管理Linux容器

完成上述配置后,我们将使用lxc命令启动和管理Linux容器。

1、创建Linux容器

要创建容器,请使用以下语法:

lxc launch images:[distro]/[version]/[architecture] [your-container-name]

在命令中,替换:

distro是Linux发行版,比如CentOS、RedHat。

version是分发的版本。

Architecture是具有CPU架构的架构,比如amd4、i386、ppc64el。

your-container-name是要创建的容器所需的名称。

例如,要创建Ubuntu 20.04(focal) amd64容器,我将执行以下命令:

$ lxc launch images:ubuntu/20.04/amd64 Ubuntu20

Creating Ubuntu20

Starting Ubuntu20

2、列出可用的容器

可以运行多个容器,一旦创建,可以使用以下命令列出它们:

$ lxc list

样本输出:

\

3、停止、启动和删除LXC容器

创建容器后,您可以在需要时通过启动、停止和删除容器来管理它们。

可以使用以下命令实现这些操作:

lxc start container-name

lxc stop container-name

lxc restart container-name

lxc delete container-name

例如,创建的Ubuntu20容器可以停止,如下所示:

lxc stop Ubuntu20

现在查看容器的状态:

\

4、查看容器信息

容器的信息如下所示:

lxc info container-name

例如,关于Ubuntu20容器的信息,如下所示:

$ lxc info Ubuntu20

Name: Ubuntu20

Status: RUNNING

Type: container

Architecture: x86_64

Resources:

Processes: 14

Disk usage:

root: 538.77MiB

CPU usage:

CPU usage (in seconds): 0

Memory usage:

Memory (current): 101.87MiB

Memory (peak): 104.12MiB

Network usage:

lo:

Type: loopback

State: UP

MTU: 65536

Bytes received: 0B

Bytes sent: 0B

Packets received: 0

Packets sent: 0

IP addresses:

inet:  127.0.0.1/8 (local)

inet6: ::1/128 (local)

eth0:

Type: broadcast

5、在容器中执行临时命令

与docker类似,您也可以在LXD容器内执行命令。使用的语法如下:

lxc exec container-name <command>

例如,要在Ubuntu20容器上安装Apache,我们将执行:

lxc exec Ubuntu20 -- apt -y install apache2

6、访问容器bash

要执行命令,还可以访问容器的bash,如下所示:

lxc exec Ubuntu20 -- /bin/bash

一旦进入shell,就可以执行所需的命令:

\

步骤8、使用LXD GUI管理LXC容器

对于那些不熟悉命令行的人,您还可以使用LXD GUI来管理LXC容器。

从Snap安装lxdmosaic,如下所示:

$ sudo snap install lxdmosaic

lxdmosaic 0+git.2124524 from Daniel Hope (turtle0x1) installed

分配并允许所需的端口通过防火墙:

sudo snap set lxdmosaic ports.http=81 ports.https=444

sudo firewall-cmd --zone=public --add-port=81/tcp --permanent

sudo firewall-cmd --zone=public --add-port=444/tcp --permanent

sudo firewall-cmd --reload

通过设置访问网页的首选密码来配置LXD GUI:

lxc config set core.https_address [::]

lxc config set core.trust_password your-password

在上述命令中,用您的首选密码替换your-password,比如:

lxc config set core.https_address [::]

lxc config set core.trust_password hmxthome

重新启动系统上的管理单元:

sudo systemctl restart snapd

步骤9、访问LXD Web UI

使用URL地址格式为https://IP_address:444的在Chrome或任何其他功能强大的浏览器上访问LXD Web UI。需要填写所需的详细信息:

\

输入上面设置的LXD服务器IP地址和密码。此外,为LXD Mosaic创建一个管理员用户。填写完所有细节后,启动LXD Mosaic,如下所示:

\

现在使用创建的管理员用户凭据登录就可以实现使用LXD GUI来管理容器了:

\

至此,通过以上操作步骤,已经能够在Linux系统上使用LXC/LXD创建和管理Linux容器了。