Установка и настройка LXD под Ubuntu 18.04

LXD - это гипервизор LXC контейнеров. Продвинутая версия LXC

UID и GID Maping

Перед настройкой LXD убедитесь, что у вас корректно настроены map uig и gid. Mapping нужен для того, чтобы запускать непривелигированные контейнера. Т.е. root в контейнере на хост машине будет работать с ID 100000, а не 0. Соостветственно файлы в контейнеры будут иметь владельца, начиная с 100000.

nano /etc/subuid

lxc:100000:65536
lxd:100000:65536
root:100000:65536

nano /etc/subgid

lxc:100000:65536
lxd:100000:65536
root:100000:65536

Для удобства вы можете добавить пользователя lxc-root.

groupadd -r --gid 100000 lxc-root
useradd -r -M --uid 100000 -g lxc-root lxc-root

Установка LXD под Ubuntu 18.04

Установите пакеты LXD:

aptitude install lxd lxd-client

Инициируйте LXD:

lxd init

Ответы на вопросы:

# lxd init

Would you like to use LXD clustering? (yes/no) [default=no]: no
Do you want to configure a new storage pool? (yes/no) [default=yes]: yes
Name of the new storage pool [default=default]: default
Would you like to connect to a MAAS server? (yes/no) [default=no]: no
Would you like to create a new local network bridge? (yes/no) [default=yes]: yes
What should the new bridge be called? [default=lxdbr0]: lxdbr0
What IPv4 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]: 10.0.200.1/24
Would you like LXD to NAT IPv4 traffic on your bridge? [default=yes]: yes
What IPv6 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]: none
Would you like LXD to be available over the network? (yes/no) [default=no]: no
Would you like stale cached images to be updated automatically? (yes/no) [default=yes] no
Would you like a YAML "lxd init" preseed to be printed? (yes/no) [default=no]: yes
config:
  images.auto_update_interval: "0"
networks:
- config:
    ipv4.address: 10.200.0.1/16
    ipv4.nat: "true"
    ipv6.address: none
  description: ""
  managed: false
  name: lxdbr0
  type: ""
storage_pools:
- config: {}
  description: ""
  name: default
  driver: dir
profiles:
- config: {}
  description: ""
  devices:
    eth0:
      name: eth0
      nictype: bridged
      parent: lxdbr0
      type: nic
    root:
      path: /
      pool: default
      type: disk
  name: default
cluster: null

Образы LXD

Скачать образ Ubuntu:

lxc image copy images:ubuntu/18.04/amd64 local: --alias=ubuntu-18.04

Скачать образ Alpine:

lxc image copy images:alpine/3.10/amd64 local: --alias=alpine-3.10

Запуск контейнера:

lxc launch ubuntu-18.04 test-ubuntu

Настройка статического IP адреса

lxc stop test-ubuntu
lxc network attach lxdbr0 test-ubuntu eth0 eth0
lxc config device set test-ubuntu eth0 ipv4.address 10.0.200.10
lxc start test-ubuntu

Полезные материалы:

  1. LXD 2.0: Введение в LXD
  2. Пошаговая инструкция настройки LXD на Ubuntu 16.04
  3. Конфигурация контейнера