LXD コンテナを作る

LXD はLinux ベースの準仮想環境を作る技術です。

LXD Init

初回設定です。zfs 用パーティション、ブリッジインターフェイスを作っておきます。

Ubuntu20.04 でサーバーを立てる

zfs 用パーティションはフォーマット・マウントせずに。

lxd init
1. Would you like to use LXD clustering? (yes/no) [default=no]:
2. Do you want to configure a new storage pool? (yes/no) [default=yes]:
3. Name of the new storage pool [default=default]: lxd
4. Name of the storage backend to use (btrfs, dir, lvm, zfs) [default=zfs]:
5. Create a new ZFS pool? (yes/no) [default=yes]:
6. Would you like to use an existing empty block device (e.g. a disk or partition)? (yes/no) [default=no]: yes
7. Path to the existing block device: /dev/ubuntu-vg/lxd
7.) Size in GB of the new loop device (1GB minimum) [default=6GB]:
8. Would you like to connect to a MAAS server? (yes/no) [default=no]:
9. Would you like to create a new local network bridge? (yes/no) [default=yes]: no
10. Would you like to configure LXD to use an existing bridge or host interface? (yes/no) [default=no]: yes
11. Name of the existing bridge or host interface: br2
12. Would you like LXD to be available over the network? (yes/no) [default=no]:
13. Would you like stale cached images to be updated automatically? (yes/no) [default=yes]
14. Would you like a YAML "lxd init" preseed to be printed? (yes/no) [default=no]: yes

ブリッジインターフェイスが複数あるなら

lxc profile edit default
devices:
  eth0:
    name: eth0
    nictype: bridged
    parent: br0
    type: nic
  eth1:
    name: eth1
    nictype: bridged
    parent: br1
    type: nic
  eth2:
    name: eth2
    nictype: bridged
    parent: br2
    type: nic

LXD コンテナを作る

作成、起動、ログイン

lxc init ubuntu:20.04 dns4-loog
lxc start dns4-loog
lxc exec dns4-loog bash

ログインして初期設定する。

# Network configulation
vi /etc/netplan/99-netplan.yaml
network:
version: 2
ethernets:
    eth0:
        dhcp4: false
        dhcp6: true
        addresses: [192.168.8.47/24]
    eth1:
        dhcp4: false
        dhcp6: true
        addresses: [192.168.9.47/24]
    eth2:
        dhcp4: false
        addresses: [192.168.24.47/24]
        gateway4: 192.168.24.9
        nameservers:
            addresses: [8.8.8.8]

# Apply
netplan apply

timedatectl set-timezone Asia/Tokyo

apt update
apt upgrade -y

イメージバックアップ・リストア

// スナップショット
lxc snapshot dns4-loog

// コンテナ情報
lxc info dns4-loog

// イメージ作成 (スナップショットを指定しないとコンテナが一時停止してしまう)
lxc publish dns4-loog/snap0 --alias dns4-loog-img

// イメージをアーカイブ(tar.gz)出力
lxc image export dns4-loog-img

リストア

// スナップショットで戻す
lxc restore dns4-loog snap0

// アーカイブ(ファイル)からイメージに格納
lxc image import 0ba...s.tar.gz --alias dns4-centwo-img

// イメージからコンテナを生成
lxc init dns4-centwo-img dns4-centwo

// コンテナ・スナップショットの削除
lxc delete dns4-centwo          // Be carefull !
lxc delete dns4-centwo/snap0