开源实例之LXD
前言
LXD is a next generation system container and virtual machine manager. It offers a unified user experience around full Linux systems running inside containers or virtual machines.
LXD is image based and provides images for a wide number of Linux distributions. It provides flexibility and scalability for various use cases, with support for different storage backends and network types and the option to install on hardware ranging from an individual laptop or cloud instance to a full server rack.
When using LXD, you can manage your instances (containers and VMs) with a simple command line tool, directly through the REST API or by using third-party tools and integrations. LXD implements a single REST API for both local and remote access.
官网地址是https://linuxcontainers.org。
LXD的介绍
LXD 是建立在 LXC(LinuX Container)之上的开源容器引擎。简而言之,LXD 就是提供了 REST API 的 LXC 容器管理器,拥有守护进程。LXD 最主要的目标就是使用 Linux 容器而不是硬件虚拟化向用户提供一种接近虚拟机的使用体验。
LXD 与 Docker 的区别
LXD 聚焦于系统容器,通常也被称为架构容器。这就是说 LXD 容器实际上如在裸机或虚拟机上运行一般运行了一个完整的 Linux 操作系统。这些容器一般基于一个干净的发布镜像并会长时间运行。传统的配置管理工具和部署工具可以如在虚拟机、云实例和物理机器上一样与 LXD 一起使用。
相对的, Docker 关注于短期的、无状态的、最小化的容器,这些容器通常并不会升级或者重新配置,而是作为一个整体被替换掉。这就使得 Docker 及类似项目更像是一种软件发布机制,而不是一个机器管理工具。
LXD容器的构成
LXD 中的容器包括以下及部分:
* 根文件系统(rootfs)
* 配置选项列表,包括资源限制、环境、安全选项等等
* 设备:包括磁盘、unix 字符/块设备、网络接口
* 一组继承而来的容器配置文件
* 属性(容器架构、暂时的还是持久的、容器名)
* 运行时状态(当用 CRIU 来中断/恢复时)
LXD的安全性
LXD 通过使用 LXC 库实现的主要安全特性有:
* 内核名字空间。尤其是用户名字空间,它让容器和系统剩余部分完全分离。LXD 默认使用用户名字空间(和 LXC 相反),并允许用户在需要的时候以容器为单位关闭(将容器标为“特权的”)。
* Seccomp 系统调用。用来隔离潜在危险的系统调用。
* AppArmor。对 mount、socket、ptrace 和文件访问提供额外的限制。特别是限制跨容器通信。
* Capabilities。阻止容器加载内核模块,修改主机系统时间,等等。
* CGroups。限制资源使用,防止针对主机的 DoS 攻击。
LXD的安装
官网建议使用 snap 安装,以 Debian 为例:
sudo apt install snapd
sudo snap install lxd
sudo lxd init
LXD的使用
列出镜像
lxc image list
列出远程可用
lxc remote list
拉取镜像
lxc launch ubuntu ubuntu
运行容器
lxc exec ubuntu -- /bin/bash
列出容器
lxc list
后记
标签: 开源实例