LXD 常用命令速查手册

一份为开发者和运维人员准备的 LXD 核心命令清单,包含大量快捷命令,助你高效管理容器与虚拟机。

1. 实例管理 (Instance)

创建与启动

启动一个 Ubuntu 24.04 容器,并命名为 my-ubuntu。

lxc launch images:ubuntu/24.04 my-ubuntu

启动一个 Debian 12 虚拟机。

lxc launch images:debian/12 my-debian-vm --vm

启动容器并应用指定的 profile。

lxc launch images:alpine/edge my-alpine -p default -p macvlan

启动并直接配置资源。

lxc launch images:ubuntu/24.04 web-server -c limits.cpu=2 -c limits.memory=1GiB

查看与列出

查看所有实例的简略信息。

lxc list

使用正则表达式过滤名称。

lxc list "web-*"

自定义输出列 (n:名字, s:状态, 4:IPv4, P:profile, t:类型)。

lxc list -c n,s,4,P,t

执行命令与交互

在容器内获取一个交互式 bash shell。

lxc exec my-ubuntu -- bash

运行单个命令,例如更新包列表。

lxc exec my-ubuntu -- apt update

获取虚拟机的控制台访问权限。

lxc console my-debian-vm

生命周期管理

启动实例。

lxc start my-ubuntu

停止实例。

lxc stop my-ubuntu

重启实例。

lxc restart my-ubuntu

暂停实例 (冻结状态)。

lxc pause my-ubuntu

删除实例 (必须先停止)。

lxc delete my-ubuntu

强制删除 (无需停止)。

lxc delete my-ubuntu --force

文件传输

推送单个文件到实例。

lxc file push ./local.conf my-ubuntu/etc/nginx/nginx.conf

从实例拉取单个文件。

lxc file pull my-ubuntu/var/log/syslog .

递归推送整个目录。

lxc file push -r ./my-app my-ubuntu/opt/

2. 镜像管理 (Image)

查找与列出

列出本地已下载的镜像。

lxc image list

在 `images` 远程仓库中搜索包含 "ubuntu" 的镜像。

lxc image search images:ubuntu

导入与导出

从远程仓库复制一个镜像到本地,并设置别名。

lxc image copy images:ubuntu/24.04 local: --alias my-ubuntu-24.04

将现有实例发布为新镜像。

lxc publish my-ubuntu --alias clean-ubuntu

维护

为镜像创建或修改别名。

lxc image alias create u24 my-ubuntu-24.04

删除本地镜像。

lxc image delete my-ubuntu-24.04

3. 网络配置 (Network)

网络管理

列出所有网络。

lxc network list

查看默认桥接网络 `lxdbr0` 的详细信息。

lxc network show lxdbr0

在交互模式下编辑网络配置。

lxc network edit lxdbr0

实例网络配置

为实例 `my-ubuntu` 设置静态 IPv4 地址。

lxc config device set my-ubuntu eth0 ipv4.address 10.0.1.100

添加一个 `macvlan` 设备,使容器直接连接到物理网络。

lxc config device add my-ubuntu eth1 nic nictype=macvlan parent=eth0

设置端口转发:将主机的 8080 端口转发到容器的 80 端口。

lxc config device add my-ubuntu http-proxy proxy listen=tcp:0.0.0.0:8080 connect=tcp:127.0.0.1:80

4. 存储管理 (Storage)

存储池

列出所有存储池。

lxc storage list

创建一个名为 `data` 的 ZFS 存储池。

lxc storage create data zfs

查看 `default` 存储池的信息。

lxc storage info default

存储卷

在 `data` 存储池中创建一个 10GB 大小的自定义存储卷 `my-volume`。

lxc storage volume create data my-volume size=10GiB

将存储卷 `my-volume` 挂载到实例 `my-ubuntu` 的 `/mnt/data` 目录。

lxc storage volume attach data my-volume my-ubuntu /mnt/data

列出 `data` 存储池中的所有存储卷。

lxc storage volume list data

5. 配置与 Profile

Profile 管理

列出所有可用的 profile。

lxc profile list

创建一个名为 `webserver` 的新 profile。

lxc profile create webserver

编辑 `webserver` profile 的配置。

lxc profile edit webserver

为实例 `my-ubuntu` 添加 `webserver` profile。

lxc profile add my-ubuntu webserver

实例独立配置

设置实例在主机启动时自动启动。

lxc config set my-ubuntu boot.autostart true

为实例添加一个磁盘设备,将主机的 `/data` 目录挂载到容器的 `/data`。

lxc config device add my-ubuntu data-share disk source=/data path=/data

查看实例 `my-ubuntu` 的所有配置 (包括应用的 profile)。

lxc config show my-ubuntu --expanded

6. 快照、备份与迁移

快照

为实例 `my-ubuntu` 创建一个名为 `pre-update` 的快照。

lxc snapshot my-ubuntu pre-update

将实例恢复到指定的快照状态。

lxc restore my-ubuntu pre-update

删除快照。

lxc delete my-ubuntu/pre-update

备份与恢复

将实例导出为压缩包备份文件。

lxc export my-ubuntu my-ubuntu-backup.tar.gz

从备份文件导入实例。

lxc import my-ubuntu-backup.tar.gz

移动与复制

在本地重命名实例。

lxc move my-ubuntu new-name

在本地复制一个新实例。

lxc copy my-ubuntu my-ubuntu-clone

7. 信息查看

查看 LXD 服务器状态和配置信息。

lxc info

查看特定实例 `my-ubuntu` 的详细信息,包括快照和资源使用情况。

lxc info my-ubuntu

实时监控 LXD 的事件日志。

lxc monitor

查看 LXD 守护进程的日志。

lxc monitor --type=logging

查看最近的操作记录。

lxc operation list

8. 远程与集群

远程管理

列出所有已配置的远程服务器。

lxc remote list

添加一个新的远程 LXD 服务器。

lxc remote add my-remote 192.168.1.100

列出名为 `my-remote` 的远程服务器上的所有实例。

lxc list my-remote:

将远程实例 `my-remote:c1` 复制到本地。

lxc copy my-remote:c1 local:c1-copy

集群

列出集群中的所有成员节点。

lxc cluster list

在特定集群节点 `node1` 上创建实例。

lxc launch images:ubuntu/24.04 c3 --target node1

9. 实用快捷命令

信息查询

快速获取某个实例的 IP 地址。

lxc list my-ubuntu -c 4 --format csv | cut -d' ' -f1

列出所有正在运行的实例名称。

lxc list --format csv -c n --filter status=running

查看所有实例的资源使用情况(C:CPU, m:内存, N:网络)。

lxc list -c n,s,C,m,N

批量操作

停止所有正在运行的实例。

lxc list -c n --format csv --filter status=running | xargs -r -I {} lxc stop {}

删除所有已停止的实例。

lxc list -c n --format csv --filter status=stopped | xargs -r -I {} lxc delete {}

在所有运行的 Ubuntu 容器内执行更新。

for c in $(lxc list images:ubuntu -c n --format csv --filter status=running); do lxc exec $c -- apt update \&\& apt upgrade -y; done

清理与维护

清理所有未使用的本地镜像缓存。

lxc image list --format json | jq -r '.[] | select(.auto_update == false and (.aliases | length) == 0) | .fingerprint' | xargs -r lxc image delete

警告:这是一个破坏性操作

此命令将立即并永久删除您系统上的 所有 LXD 实例,且无法恢复。请在执行前再三确认。

强制删除所有实例。

lxc list -c n --format csv | xargs -r -I {} lxc delete --force {}