分门别类地整理了LXD的相关命令,在每种应用场景下给出示例。
一、编辑lxd配置
根据lxd即插即用的哲学,lxd的配置文件(profile)也是可以自由创建、修改、应用到容器上的。
其中default profile不可删除,初始化时即创建。
profile可以被用在多个instances上,一个instance也可以使用多个profile。
instance上的config会覆盖掉profile。
以下default profile为例,列举编辑profile的常用命令。
格式:1
2lxc profile device add <profile> <name> <type> [key=value]...
lxc profile set <profile> <key> <value>
对应的config格式:1
2lxc 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
2sudo lxc profile device add default shared-folder \
disk source=/usr/local/shared-folder path=/usr/local/shared-folder
6. 配置端口映射(只能对单个容器进行配置,不能搞profile)
1 | sudo lxc config device add <ContainerName> \ |
7. 限制网络IO
接上网桥1
2sudo lxc profile device add default eth0 \
nic name=eth0 nictype=bridged parent=lxdbr0
限制网络IO带宽1
2sudo lxc profile device set default eth0 \
limits.ingress 100Mbit
限制单个容器的网络IO带宽1
2sudo lxc config device override zhangshenyi eth0 \
limits.ingress=1000Mbit
二、管理LXD镜像
1. 添加清华镜像站点
1 | sudo lxc remote add tuna-images \ |
2. 查看镜像列表
1 | sudo lxc image list tuna-images: |
3. 从镜像创建容器
从清华镜像站点拉取编号为yyyyyyyy的镜像,在本地创建名为xxxxxx的容器1
sudo lxc launch tuna-images:yyyyyyyy xxxxxx
4. 把当前容器打包生成镜像
1 | sudo lxc stop <ContainerName> |
5. 导出镜像到.tar文件
1 | sudo lxc image export [<remote>:]<ImageName> <TargetFileName> |
6. 从.tar文件中导入镜像
1 | sudo lxc image import <Tarball> --alias <NewImageName> --public |
三、管理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 | sudo apt install -y git build-essential libssl-dev python3-venv python3-pip python3-dev zfsutils-linux bridge-utils |
2. 拉源码,创建运行环境,跑setup
1 | git clone https://github.com/AdaptiveScale/lxdui.git |
3. 开启
1 | lxdui start |
访问界面: http://127.0.0.1:15151
初始登录账号密码: admin | admin