文章目录

  • 1 LXD简介
  • 1.1 容器技术
  • 1.2 LXC与Docker
  • 2 镜像(image)
  • 2.1 镜像
  • 2.2 指令
  • 3 容器(container)
  • 3.1 容器与快照
  • 3.2 常用指令
  • 4 存储(storage)
  • (可选)文件管理ZFS
  • 5 配置组
  • 端口
  • GPU与CUDA(留坑)
  • 参考与工具


1 LXD简介

1.1 容器技术

使用 Linux 容器而不是硬件虚拟化向用户提供一种接近虚拟机的使用体验。

1.2 LXC与Docker

LXD是LXC的升级,更加易用以及方便主机间的通信。
LXD更注重系统容器,即运行一个完整的Linux操作系统,而Docker 侧重与在容器中运用普通应用,关注于短期的、无状态的、最小化的容器。
这两种模型并不是完全互斥的。完全可以使用 LXD 为来提供一个完整的 Linux 系统,然后可以在 LXD 内安装 Docker 来运行想要的软件。

  • 安装lxd
    sudo snap install lxd

2 镜像(image)

2.1 镜像

LXD 是基于镜像实现的,所有的 LXD 容器都是来自于镜像。
容器镜像可以是一些纯净的 Linux 发行版的镜像,也可以由用户的容器生成并发布。
LXD 安装时已经配置好了三个远程镜像服务器:

  1. “ubuntu”:提供稳定版的 Ubuntu 镜像
  2. “ubuntu-daily”:提供 Ubuntu 的每日构建镜像
  3. “images”: 社区维护的镜像服务器,提供一系列的其它 Linux 发布版,使用的是上游 LXC 的模板

2.2 指令

  • 显示已有镜像
    lxc image list
  • 镜像加载成容器
    lxc launch (镜像名) (要创建的容器名)
  • 使用已有容器/快照生成镜像
    lxc publish (容器名/快照名) --alias (镜像名称)

3 容器(container)

3.1 容器与快照

容器可以视为一个完整的linux系统。
容器快照和容器是一回事,只不过快照是不可修改的,只能被重命名,销毁或者用来恢复系统,但是无论如何都不能被修改。

3.2 常用指令

  • 展示全部容器
    lxc list
  • 创建容器
    lxc launch (要使用的镜像) (容器名) -s (存储池名)
  • 展示容器信息
    lxc info (容器名)lxc info zuo
  • 让容器执行指令
    lxc exec (容器名) -- (要执行的指令) /lxc exec zuo -- df -h /
  • 启动/重启/停止/删除容器
    lxc start/restart/stop/delete (容器名)lxc delete zuo

4 存储(storage)

  • 创建默认存储池
    lxd init
  • 查看已有存储池
    lxc storage listlxc storage show (存储池名)lxc storage edit (name)
  • 创建更多的存储池
    lxc storage create my-btrfs btrfslxc storage create pool zfs size=128GB

(可选)文件管理ZFS

LXD 支持使用 ZFS、btrfs、LVM 或只是普通目录来存储图像、实例和自定义卷。

在可能的情况下,LXD 会尝试使用每个系统的高级功能来优化操作。

xvdieo镜像 lxc镜像_容器


这里推荐使用ZFS

  • 查看存储情况
    zfs list
  • LXD不能让你直接增长一个循环支持的ZFS池,但你可以用以下方式:
sudo truncate -s +5G /var/lib/lxd/disks/<POOL>.img
sudo zpool set autoexpand=on lxd
sudo zpool online -e lxd /var/lib/lxd/disks/<POOL>.img
sudo zpool set autoexpand=off lxd

(NOTE: For users of the snap, use /var/snap/lxd/common/lxd/ instead of /var/lib/lxd/)

5 配置组

  • 查看所有配置
    lxc profile show default 有些可以直接编辑器改的配置,不用看下面

端口

  • 创建映射方便外部访问
    lxc config device add (容器名) proxy0 proxy listen=tcp:(服务器IP):(给定端口) connect=tcp:(本地IP):22 bind=host

GPU与CUDA(留坑)

  • 查看GPU状态
    nvidia-smi