distrobuilderは,
distrobuilderのインストール
distrobuilder自体は単なるGo言語製のプログラムです。Ubuntuだけでなく,
インストールはUbuntuならsnapパッケージを使うのが一番確実でしょう。
$ sudo snap install distrobuilder --classic
ちなみに8月9日に最新の1.
Ubuntu以外ならGo言語の環境を整えた上で,go get
するのが簡単です。
$ go get -v -x github.com/lxc/distrobuilder/distrobuilder
distrobuilder自体はシンプルなコマンドです。
$ distrobuilder System container image builder for LXC and LXD Usage: distrobuilder [command] Available Commands: build-dir Build plain rootfs build-lxc Build LXC image from scratch build-lxd Build LXD image from scratch help Help about any command pack-lxc Create LXC image from existing rootfs pack-lxd Create LXD image from existing rootfs repack-windows Repack Windows ISO with drivers included Flags: --cache-dir Cache directory --cleanup Clean up cache directory (default true) --debug Enable debug output -h, --help help for distrobuilder -o, --options Override options (list of key=value) -t, --timeout Timeout in seconds --version Print version number Use "distrobuilder [command] --help" for more information about a command.
helpを除くと,distrobuilder help サブコマンド
」
build-dir
:指定したディレクトリにルートファイルシステムを構築しますbuild-lxc
:LXC向けのイメージデータを構築しますbuild-lxd
:LXD向けのイメージデータを構築しますpack-lxc
:build-dir
で構築したルートファイルシステムをベースにLXC向けのイメージデータを構築しますpack-lxd
:build-dir
で構築したルートファイルシステムをベースにLXD向けのイメージデータを構築しますrepack-windows
:WindowsのダウンロードISOイメージを,VM版のLXDのインストールイメージに作り変えます
なお,build-dir
の実行にはbtrfs-progs
パッケージが必要になるなど,
主に使うのはLXDイメージを作成できるbuild-lxd
でしょう。LXDイメージはそのままだとsquashfsとして構築します。また--vm
」
「LXC/lxc-create
」lxc image
」
シンプルなUbuntuイメージを作る
まずは単にUbuntuのLXDイメージを構築してみましょう。イメージの元となる情報は,
$ mkdir -p ~/temp/images/ubuntu && cd $_ $ wget https://raw.githubusercontent.com/lxc/distrobuilder/master/doc/examples/ubuntu.yaml
distrobuilderの実行には管理者権限が必要です。
$ sudo distrobuilder build-lxd ubuntu.yaml
上記の設定ではdebootstrapを使っています。流れとしては
構築には環境によって数分から十数分かかります。実際に作られるのは次のようなファイルです.
$ ls -sh1 合計 103M 4.0K lxd.tar.xz 103M rootfs.squashfs 8.0K ubuntu.yaml $ tar tvf lxd.tar.xz -rw-r--r-- root/root 481 2021-08-07 20:42 metadata.yaml drwxr-xr-x root/root 0 2021-08-07 20:42 templates/ -rw-r--r-- root/root 140 2021-08-07 20:42 templates/hosts.tpl -rw-r--r-- root/root 21 2021-08-07 20:42 templates/hostname.tpl
rootfs.
実際にLXDのイメージサービスにインポートしてみましょう。--alias
」
$ lxc image import lxd.tar.xz rootfs.squashfs --alias ubuntu1st Image imported with fingerprint: 99032636054e0162c217e9cb9515b9413b2d0fa32fb32e4e59394fafe36baf42 $ lxc image list ubuntu1st +-----------+--------------+--------+--------------+--------------+-----------+----------+------------------------------+ | ALIAS | FINGERPRINT | PUBLIC | DESCRIPTION | ARCHITECTURE | TYPE | SIZE | UPLOAD DATE | +-----------+--------------+--------+--------------+--------------+-----------+----------+------------------------------+ | ubuntu1st | 99032636054e | no | Ubuntu focal | x86_64 | CONTAINER | 102.88MB | Aug 7, 2021 at 12:28pm (UTC) | +-----------+--------------+--------+--------------+--------------+-----------+----------+------------------------------+
無事にイメージを取り込めました。image info
コマンドでその内容を確認できます。
$ lxc image info ubuntu1st Fingerprint: 99032636054e0162c217e9cb9515b9413b2d0fa32fb32e4e59394fafe36baf42 Size: 102.88MB Architecture: x86_64 Type: container Public: no Timestamps: Created: 2021/08/07 11:42 UTC Uploaded: 2021/08/07 12:28 UTC Expires: 2021/09/06 11:42 UTC Last used: never Properties: serial: 20210807_1136 variant: default architecture: amd64 description: Ubuntu focal name: ubuntu-disco-x86_64 os: ubuntu release: focal Aliases: - ubuntu1st Cached: no Auto update: disabled Profiles: - default
このイメージを使って新しいインスタンスを作るには次のように実行します。
$ lxc launch ubuntu1st test
これだけです。簡単でしたね。