0%

LXD命令速查表

分门别类地整理了LXD的相关命令,在每种应用场景下给出示例。

一、编辑lxd配置

根据lxd即插即用的哲学,lxd的配置文件(profile)也是可以自由创建、修改、应用到容器上的。
其中default profile不可删除,初始化时即创建。
profile可以被用在多个instances上,一个instance也可以使用多个profile。
instance上的config会覆盖掉profile。

以下default profile为例,列举编辑profile的常用命令。
格式:

1
2
lxc profile device add <profile> <name> <type> [key=value]...
lxc profile set <profile> <key> <value>

对应的config格式:

1
2
lxc config device add <instance> <name> <type> [key=value]...
lxc config set <instance> <key> <value>

导出某个profile的所有内容:

1
lxc profile show <profile>

1. 配置CPU限制

1
sudo lxc profile set default limits.cpu 32

2. 配置内存限制

1
sudo lxc profile set default limits.memory 64GB

3. 限制磁盘使用

1
sudo lxc storage list

把容器中的目录mount到存储池上

1
sudo lxc profile device add default root disk pool=[存储池的名字] path=/

限制根目录大小 = 限制磁盘使用

1
sudo lxc profile device set default root size 320GB

4. 配置GPU(或者叫挂载GPU)

1
sudo lxc profile device add default gpu gpu

5. 配置共享目录

使容器内的用户具有对共享目录rwx的权限(有点危险)

1
sudo lxc profile set default security.privileged true

在宿主机上创建被共享的文件夹

1
sudo mkdir /usr/local/shared-folder

文件夹映射

1
2
sudo lxc profile device add default shared-folder \
disk source=/usr/local/shared-folder path=/usr/local/shared-folder

6. 配置端口映射(只能对单个容器进行配置,不能搞profile)

1
2
3
4
sudo lxc config device add <ContainerName> \ 
port-ssh proxy \
listen=tcp:0.0.0.0:20000 \
connect=tcp:127.0.0.1:22

7. 限制网络IO

接上网桥

1
2
sudo lxc profile device add default eth0 \ 
nic name=eth0 nictype=bridged parent=lxdbr0

限制网络IO带宽

1
2
sudo lxc profile device set default eth0 \ 
limits.ingress 100Mbit

限制单个容器的网络IO带宽

1
2
sudo lxc config device override zhangshenyi eth0 \ 
limits.ingress=1000Mbit

一篇介绍lxd资源限制的博客
LXD官方文档-实例控制

二、管理LXD镜像

1. 添加清华镜像站点

1
2
3
sudo lxc remote add tuna-images \ 
https://mirrors.tuna.tsinghua.edu.cn/lxc-images/ \
--protocol=simplestreams --public

2. 查看镜像列表

1
sudo lxc image list tuna-images:

3. 从镜像创建容器

从清华镜像站点拉取编号为yyyyyyyy的镜像,在本地创建名为xxxxxx的容器

1
sudo lxc launch tuna-images:yyyyyyyy xxxxxx

4. 把当前容器打包生成镜像

1
2
sudo lxc stop <ContainerName>
sudo lxc publish <ContainerName> --alias <NewImageName> --public

5. 导出镜像到.tar文件

1
sudo lxc image export [<remote>:]<ImageName> <TargetFileName>

6. 从.tar文件中导入镜像

1
sudo lxc image import <Tarball> --alias <NewImageName> --public

ubuntu lxc image man page

三、管理LXD容器实例

1. 基本操作

列出所有实例

1
sudo lxc list

开始/停止实例

1
sudo lxc start/stop xxxxxx

以root进入容器shell界面(从容器中退出只需要输入exit)(ctrl+a q)

1
sudo lxc exec xxxxxx -- /bin/bash

以普通用户进入容器shell界面

1
sudo lxc exec instancename -- su --login username

2. 把现有容器打包成镜像

1
sudo lxc publish --public <ContainerName> --alias=<ImageName>

四、lxdui的安装和管理

1. 安装依赖

1
2
3
sudo apt install -y git build-essential libssl-dev python3-venv python3-pip python3-dev zfsutils-linux bridge-utils
sudo snap install lxd
lxd init

2. 拉源码,创建运行环境,跑setup

1
2
3
4
5
git clone https://github.com/AdaptiveScale/lxdui.git
cd lxdui
python3 -m venv mytestenv
source mytestenv/bin/activate
python3 setup.py install

3. 开启

1
lxdui start

访问界面: http://127.0.0.1:15151
初始登录账号密码: admin | admin