LXD容器
LXD容器是一种对操作系统层面进行虚拟化的容器技术。这种容器技术介于传统虚拟化(如KVM、VMware)和容器编排(如Docker、Kubernetes)之间,专注提供类似于虚拟机的隔离环境,但资源占用更少,且性能更接近原生系统。在需要运行多类型的工作负载,或者需要完整的操作系统环境的场景下,LXD容器技术会是比Docker类容器技术更加适合的容器部署方案。
1、LXD容器启动
运行LXD前,需要先执行LXD的初始化命令对容器应用进行初始化
#lxd init
从远程服务器或者本地目录拉取到LXD本地的镜像仓库,通过--alias选项可以对镜像进行命名
#lxc image copy <remote_server> local: --alias image-name
查看操作本地镜像仓库
#lxc image list
#lxc delete <image>
使用本地镜像仓库创建LXD容器,第一条是容器创建命令,第二条是容器创建后启动/关闭容器的命令
#lxc init <image> <container>
#lxc start/stop <container>
查看操作容器
#lxc list
#lxc delete <container>
2、LXD容器的配置
LXD可以通过命令对容器配置,或者可以通过特定格式的yaml文件编写容器配置模板,来对容器进行批量的分组配置
直接修改容器配置,可以配置的选项可以在官网文档中查看,下面命令是配置容器的cpu占用最高为宿主机的10%
#lxc config set <container> limits.cpu.allowance 10%
查看/修改容器的配置,edit命令和set命令不同的地方是可以对容器的配置文件直接修改来生效配置
#lxc config show --expanded <container>
#lxc config edit <container>
修改容器的yaml配置模板文件
#lxc profile edit <profile>
yaml配置文件内容如下
config:
boot.autostart: "true"
linux.kernel_modules: ip_vs,ip_vs_rr,ip_vs_wrr,ip_vs_sh,ip_tables,ip6_tables,netlink_diag,nf_nat,overlay,br_netfilter
raw.lxc: |
lxc.apparmor.profile=unconfined
lxc.mount.auto=proc:rw sys:rw cgroup:rw
lxc.cgroup.devices.allow=a
lxc.cap.drop=
security.nesting: "true"
security.privileged: "true"
description: Default LXD profile
devices:
eth0:
name: eth0
network: lxdbr0
type: nic
root:
path: /
pool: default
type: disk
name: default
used_by: []
将配置文件应用到指定容器
#lxc profile apply <container> <profile>
3、容器内命令执行和文件传输
容器内命令执行
#lxc exec <container> command
#lxc exec <container> bash
容器和宿主机的文件互传
#从容器中获取文件
#lxc file pull <container>/<path> <dest>
#发送文件到容器
#lxc file push <source> <container>/<path>
#编辑容器中的文件
#lxc file edit <container>/<path>