创建容器并运行
lxc launch {image}:{version} {name}
eg: lxc launch ubuntu u1
创建容器但是不运行
lxc init {image}:{version} {name}
停止容器
lxc stop {name}
启动
lxc start {name}
删除容器
lxc delete {name}
列出容器
显示网络(慢):lxc list
不显示网络(快): lxc list --fast
运行命令
lxc exec {name} {command}
限制CPU
lxc config set {name} limits.cpu {cores}
限制内存
lxc config set {name} limits.memory {memory}
关闭内存交换(默认启用)
lxc config set {name} limits.memory.swap false
限制硬盘
lxc config device set {name} root size={size}GB
eg: lxc config device set u1 root size=2GB
限制IO速度
lxc config device set {name} root limits.read 30MB
lxc config device set {name} root.limits.write 10MB
限制IO频率
lxc config device set {name} root limits.read 20Iops
lxc config device set {name} root limits.write 10Iops
限制网络IO
"只要机制可用,网络 I/O 基本等同于块 I/O。" https://linux.cn/article-8072-1.html
lxc profile device set default eth0 limits.ingress 100Mbit
lxc profile device set default eth0 limits.egress 100Mbit
从镜像服务器复制
lxc image copy ubuntu:14.04 local:
端口转发(代理)
添加端口
lxc config device add mycontainer myport80 proxy listen=tcp:0.0.0.0:80 connect=tcp:127.0.0.1:80
lxc config device add mycontainer myport443 proxy listen=tcp:0.0.0.0:443 connect=tcp:127.0.0.1:443
移除端口
lxc config device remove mycontainer myport80
打开远程访问
lxc config set core.https_address "[::]:8443"
设置密码以信任客户端
lxc config set core.trust_password
本地 或者 远程访问
使用CURL通过Unix Socket访问
curl -s --unix-socket /var/lib/lxd/unix.socket s/ | jq .
{
"type": "sync",
"status": "Success",
"status_code": 200,
"metadata": [
"/1.0"
]
}
使用远程访问(客户端验证)
curl -s -k --cert ~/.config/lxc/client.crt --key ~/.config/lxc/client.key https://127.0.0.1:8443/1.0/certificates -X POST -d '{"type": "client", "password": "some-password"}' | jq .
{
"type": "sync",
"status": "Success",
"status_code": 200,
"metadata": {}
}
curl -s -k --cert ~/.config/lxc/client.crt --key ~/.config/lxc/client.key https://127.0.0.1:8443/1.0 | jq .metadata.auth
"trusted"