G589F

        Стояла солнечная, теплая погода.
        Менее всего в этот день хотелось
        лазить по контейнерам..

Заметки по циклу статей Stéphane Graber "LXD 2.0: Blog post series"
-------------------------------------------------------------------

Цикл статей доступен на сайте

  https://www.stgraber.org/2016/03/11/lxd-2-0-blog-post-series-012/

1. Введение
-----------

  Демон LXD предоставляет REST API для управления LXC контейнерами.
  Сравнение с Docker
    + LXD контейнер выполняет полноценную Linux систему, так как если бы она выполнялась на железе или в виртуальной машине
    + Docker фокусируется на минимальных контейнерах, достаточных для выполнения требуемых приложений. Такие контейнеры обычно не обновляются и не перенастраиватся а целиком заменяютя на новый контейнер.

OpenStack plugin nova-lxd позволяет манипулировать контейнерами, как виртуальными машинами.

2. Установка и настройка LXD (Ubuntu 16.04)
-------------------------------------------

  sudo apt install lxd lxc

Настроить мост для использования IPv4

  sudo dpkg-reconfigure -p medium lxd

Включить IPv4. Предлагается random подсеть: 10.240.10.1
               предлагается CIDR маска: 24
               первый адрес поставляемый по DHCP: 10.240.10.2
               последний адрес поставляемый по DHCP: 10.240.10.254
               всего клиентов: 252
               NAT: yes
               IPv6: no

NB! Relogin ! Юзер должен быть в группе lxd.

  alien@AMD:~$ cat /etc/group | grep lxd
  lxd:x:130:alien

3. Первый контейнер LXD
-----------------------

Имеется в наличии:

  lxc image list ubuntu:
  lxc image list ubuntu-daily:
  lxc image list images:

Выбираем ubuntu:

  lxc launch ubuntu:

  Creating megathermic-eilene
  Retrieving image: 100%
  Starting megathermic-eilene

В ifconfig хоста виден активный мост

  lxdbr0    Link encap:Ethernet  HWaddr fe:46:70:f8:56:59  
            inet addr:10.240.10.1  Bcast:0.0.0.0  Mask:255.255.255.0
            inet6 addr: fe80::4ccf:4bff:fe98:ae92/64 Scope:Link
            UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
            RX packets:61 errors:0 dropped:0 overruns:0 frame:0
            TX packets:93 errors:0 dropped:0 overruns:0 carrier:0
            collisions:0 txqueuelen:1000 
            RX bytes:5537 (5.5 KB)  TX bytes:20284 (20.2 KB)

Что запущено?

alien@AMD:~$ lxc list
+--------------------+---------+----------------------+------+------------+-----------+
|        NAME        |  STATE  |        IPV4          | IPV6 |    TYPE    | SNAPSHOTS |
+--------------------+---------+----------------------+------+------------+-----------+
| unaugmentable-sima | RUNNING | 10.240.10.131 (eth0) |      | PERSISTENT | 0         |
+--------------------+---------+----------------------+------+------------+-----------+

Запустить/Остановить/Уничтожить:

  lxc start unaugmentable-sima
  lxc stop unaugmentable-sima
  lxc delete unaugmentable-sima

alien@AMD:~$ lxc info unaugmentable-sima
Name: unaugmentable-sima
Architecture: x86_64
Created: 2016/05/08 07:56 UTC
Status: Running
Type: persistent
Profiles: default
Pid: 20367
Ips:
  lo:	inet	127.0.0.1
  lo:	inet6	::1
  eth0:	inet	10.240.10.131	veth4BW5BX
  eth0:	inet6	fe80::216:3eff:feca:6d08	veth4BW5BX
Resources:
  Processes: 16
  Memory usage:
    Memory (current): 60.55MB
    Memory (peak): 84.89MB
  Network usage:
    eth0:
      Bytes received: 5.73kB
      Bytes sent: 3.24kB
      Packets received: 51
      Packets sent: 34
    lo:
      Bytes received: 0 bytes
      Bytes sent: 0 bytes
      Packets received: 0
      Packets sent: 0

Войти в контейнер

  lxc exec unaugmentable-sima bash

root@unaugmentable-sima:~# ip addr | grep inet
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
    inet 10.240.10.131/24 brd 10.240.10.255 scope global eth0
    inet6 fe80::216:3eff:feca:6d08/64 scope link 

root@unaugmentable-sima:~# cat /etc/issue
Ubuntu 14.04.4 LTS \n \l

root@unaugmentable-sima:~# uname -a
Linux unaugmentable-sima 4.4.0-21-generic #37-Ubuntu SMP Mon Apr 18 18:33:37 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

More..
------

  alien@AMD:~$ lxc launch images:46c0d6e8dc4c # *
  error: The image architecture is incompatible with the target server
  alien@AMD:~$ lxc launch images:72f075c33102 # *
  Creating untransformative-inocencia

*)  46c0d6e8dc4c | yes    | Fedora 22 (armhf) (20160112_01:27)
    72f075c33102 | yes    | Centos 6 (amd64) (20160506_02:16)

alien@AMD:~$ lxc exec untransformative-inocencia bash
[root@untransformative-inocencia ~]# ip addr | grep inet
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
    inet 10.240.10.38/24 brd 10.240.10.255 scope global eth0
    inet6 fe80::216:3eff:fe51:b57a/64 scope link 
[root@untransformative-inocencia ~]# cat /etc/issue
CentOS release 6.7 (Final)
Kernel \r on an \m

[root@untransformative-inocencia ~]# uname -a
Linux untransformative-inocencia 4.4.0-21-generic #37-Ubuntu SMP Mon Apr 18 18:33:37 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

OpenStack
---------

  sudo apt-get install nova-compute-lxd

lxd-gui
-------

Установка согласно

  https://github.com/dobin/lxd-webgui/blob/master/README.md

При установке на Ubuntu 16.04:

  apt install nodejs
  ln -s /usr/bin/nodejs /usr/bin/node
  bower install

Требуется регистрация ключа

  openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365 -nodes

Замечания
---------

[1] http://comments.gmane.org/gmane.linux.kernel.containers.lxc.general/11588

  On Ubuntu 16.04, if you see this:

    $ sudo apt install lxd
    $ lxc info    (or any lxc command)
    error: Get http://unix.socket/1.0: dial unix /var/lib/lxd/unix.socket:
    connect: permission denied

  a workaround that works for me is

    $ sudo systemctl restart lxd.socket


