LXD
概要
システムコンテナマネージャ
仮想マシンのような振る舞いをするが、Linuxコンテナを使う
多数のLinux環境で動作する
Goで書かれている
検証環境
table:version
item version
ubuntu 18.04
lxc 4.0.3
lxd 4.0.3
インストール
手元のUbuntu 18だとデフォルトで入っていたけれど3.0.3だった バージョンを上げる
code:sh
sudo snap install lxd --channel=4.0/stable
/snap/binにPATHが通っていない
と警告がでたので/snap/binを先に持ってくるように.bashrcを変更
code:.bashrc
export PATH="/snap/bin:$PATH"
試してみる
ドキュメントにある初期設定
code:sh
⟩ lxd init
Would you like to use LXD clustering? (yes/no) default=no: Do you want to configure a new storage pool? (yes/no) default=yes: Name of the storage backend to use (btrfs, dir, lvm) default=btrfs: Would you like to use an existing block device? (yes/no) default=no: Size in GB of the new loop device (1GB minimum) default=15GB: Would you like to connect to a MAAS server? (yes/no) default=no: Would you like to create a new local network bridge? (yes/no) default=yes: What IPv4 address should be used? (CIDR subnet notation, “auto” or “none”) default=auto: What IPv6 address should be used? (CIDR subnet notation, “auto” or “none”) default=auto: Would you like LXD to be available over the network? (yes/no) default=no: Would you like stale cached images to be updated automatically? (yes/no) default=yes Would you like a YAML "lxd init" preseed to be printed? (yes/no) default=no: コンテナの起動
code:sh
lxc launch ubuntu:20.04 ubuntuone
イメージの取得も一緒にやってるからか、結構待たされる
コンテナの状態確認
code:sh
lxc list
コンテナへの接続
code:sh
# ubuntuone は前述のlxc listで表示されたNAMEから取得
lxc exec ubuntuone -- bash
スナップショットの取得
コンテナ外で
code:sh
lxc snapshot ubuntuone ubuntuone-$(date +%Y-%m-%d)
コンテナが出来て間もないからか、スナップショットの取得が一瞬だった
スナップショットの確認
code:sh
lxc info ubuntuone | tail -n 3
スナップショットから復元
code:sh
lxc restore ubuntuone ubuntuone-2020-10-10
試しにコンテナ内で apt update -y && apt install -y fishしてからコンテナ外にでてスナップショットを取得してrestoreしたらしっかりfishがインストールされる前の状態に戻った
出来て間もないコンテナだったからか、restoreが一瞬で完了した
参考