LXD 使用

创建容器基本用法

## 使用Ubuntu 22.04镜像启动一个名为ceshi的容器
lxc launch ubuntu:22.04 ceshi
## 检查启动的实例列表
lxc list
## 使用命令查询每个实例的更多信息
lxc info ceshi
## 停止容器
lxc stop ceshi
## 删除容器
lxc delete ceshi
## 强制删除容器
lxc delete ceshi --force

创建容器高阶用法

你可以为实例设置一些限制和配置选项

容器资源限制

## 启动一个名为limited的容器并将其限制为一个vCPU和192 MiB的RAM
lxc launch ubuntu:22.04 limited --config limits.cpu=1 --config limits.memory=192MiB
## 检查当前配置
lxc config show limited
## 检查父系统和两个容器上的空闲和已用内存量
free -h
lxc exec ceshi -- free -h
lxc exec limited -- free -h
## 检查父系统和两个容器上可用的cpu数量
nproc
lxc exec ceshi -- nproc
lxc exec limited -- nproc

容器配置变更

容器运行时更新配置

## 容器配置内存限制
lxc config set limited limits.memory=128MiB
## 检查当前配置
lxc config show limited
## 查看变更后内存大小
lxc exec limited -- free -h

更改容器名称

不允许重命名正在运行的实例。

lxc stop limited
lxc rename limited limit
lxc start limit

容器添加设备和权限

lxc config device add limit gpu gpu
lxc config set limit security.nesting true
lxc config set limit security.privileged true

容器共享文件夹

使用 lxc file 文件传输命令

上传文件至容器,下载容器内文件至本地。

## 复制文件夹需要在最后加 -r
## 表示从宿主机复制文件到容器
lxc file push <source path> <container>/<path> 
lxc file push test.txt limit/tmp/test.txt
## 表示将容器的文件复制到宿主机
lxc file pull <container>/<path> <target path>
lxc file pull limit/tmp/test.txt test.txt

创建共享文件夹

lxc config set <container> security.privileged true
lxc config device add <container> <device-name> disk source=/home/xxx/share path=/home/xxx/share
## 其中 path 为容器路径,source 为宿主机路径。device-name 随意取名字即可
lxc config device add limit data disk source=/data/lxd-data path=/root/data
## 移除共享文件夹
lxc config device remove <container> <device-name>

全局配置

上文中那样配置容器,如果数量少是可以的,但是容器很多时,需要我们做个全局的配置,将显卡、共享文件夹、资源限制等纳入到全局配置中。

lxd profilelxd config命令区别:

profile是全局配置如命令lxc profile edit default,config则是针对单个容器配置如命令lxc config edit limit

一些配置参数:

下面是个全局配置示例:

# 设置共享目录
lxc profile device add default data disk source=/data/lxd-data path=/opt/data
# 添加 GPU
lxc profile device add default gpu gpu
# 配置 nvidia.runtime,让容器使用宿主机的驱动和相关 runtime,这样就不需要在容器内安装驱动
# 此项和security相关配置冲突,如果想用特权容器,则删掉此项,手动安装驱动
lxc profile set default nvidia.runtime true
# 开机自动启动容器
lxc profile set default boot.autostart true
# 可以再次检查这个默认的 profile 是否有误
lxc profile show default
# 修改默认配置项
lxc profile edit default

说明:容器内手动安装Nvidia驱动 bash ./NVIDIA-Linux-x86_64-545.23.06.run --no-kernel-module 。

参考文档