LXD容器入门

简介

LXD, 是一种基于LXC(Linux 容器)的虚拟技术。而LXC 也是Docker的基础,但不同于Docker的是,Docker是对应用的虚拟化,而LXD则是在OS层面虚拟化靠齐。关于其本身的详细介绍,可以参照github上的链接https://github.com/lxc/lxd。

同虚拟机差异

既然说起LXD是一种虚拟化技术,就不能不拿它和虚拟机比较,例如VMware, Xen, KVM等。具体特性比较参加下面的表格:

特性 虚拟机 LXD
宿主机OS Windows,Unix/Linux等 Linux
客户机OS 同上 Linux
底层技术 KVM/Xen/Vmware等 LXC
启动速度 分级 秒级
性能损耗 比较大 几乎无(进程隶属于主机创建,仅仅是命名空间不同)
主客隔离性 完全隔离 共享内核,文件系统,进程,网络等从内核层面与主机隔离
用户感知 完全独立的操作系统 近似独立的操作系统

同Docker差异

特性 Docker LXD
技术基础 LXC LXC
虚拟对象 应用 操作系统
生命周期 随主进程而停止 持续运行直至主动停止
进程数量 主张单进程 任意多进程

安装和配置

LXD 最初是有Ubuntu 母公司Canonical创立,在Ubuntu上支持最好,所以安装就已Ubuntu最近的LTS版本16.04为例。

  1. 安装

    root@ubuntu:~# apt update  #更新apt到最新
    root@ubuntu:~# apt install lxd #执行安装

    如果一切顺利,执行如下命令应该有如下输出

    root@ ubuntu:~# lxc list
    +-------+---------+-----------------------+------+------------+-----------+
    | NAME  |  STATE  |         IPV4          | IPV6 |    TYPE    | SNAPSHOTS |
    +-------+---------+-----------------------+------+------------+-----------+
  2. 配置

    默认装好的lxd除了网络之外其他功能可以正常使用,一般来说,网络对与一个服务器来说是很重要的,所以按照下面的操作配置网络:

    root@ubuntu:~# dpkg-reconfigure -p medium lxd

    上述命令执行后有图形向导界面指导配置IPv4和IPv6的网络,如果没有特殊需求,一路next接受默认就可以了。

使用

  1. 创建第一个容器

    root@ubuntu:~# lxc launch  ubuntu:xenial foo   
    Creating foo
    Starting foo 
    root@ ubuntu:~# lxc list
    +-------+---------+-----------------------+------+------------+-----------+
    | NAME  |  STATE  |         IPV4          | IPV6 |    TYPE    | SNAPSHOTS |
    +-------+---------+-----------------------+------+------------+-----------+
    | foo   | RUNNING | 10.185.109.13 (eth0)  |      | PERSISTENT | 0         |
    +-------+---------+-----------------------+------+------------+-----------+
  2. 在容器中运行命令

    root@ubuntu:~# lxc exec foo bash
    root@foo:~#hostname
    foo

    随着 root@foo:~# 的出现,即进入了该容器的终端,之后就可以像一台完全独立的虚拟机一样操作该容器了。要退出bash,执行exit即可。

  3. 启动, 停止,重启及删除容器

    lxc start foo
    lxc stop foo
    lxc restart foo
    lxc delete foo
    

总结

以上是对 LXD 技术的从安装到基本使用的一些介绍,希望对此技术有兴趣的人有一些帮助。之后,我会在后续的blog中介绍一些高级用法,例如容器的复制,配置,创建snapshot以及迁移等高级话题。