またまたFireflyの話です。
LXD環境で運用していますが一度LXDプロセスが壊れてしまって作り直しました。
また同じことが会ってもすぐ復旧できるようにバックアップを取っておきたいところです。
リカバリだけではなくバージョンアップ用の土台にもなりますので今回はコンテナイメージの作成を行ってみます。
バックアップ内容
以下の順で作成します。
snapshotからコピーを取るのはyoutubeで動画があったので参考にしました。
わざわざ取らなくても良かったかもしれません。
- snapshot作成
- コンテナのコピー
- コピーからイメージ作成
LXDバージョン
ubuntuデスクトップ上で動かしてます。
masashi@PC-ubuntu:~$ lxc --version 4.13
snapshot作成
今運用しているFireflyコンテナのsnapshotを取ります。
停止してコマンド打つだけです。
masashi@PC-ubuntu:~$ lxc stop firefly
masashi@PC-ubuntu:~$ lxc snapshot firefly masashi@PC-ubuntu:~$ lxc info firefly Name: firefly Location: none Remote: unix:// Architecture: x86_64 Created: 2021/02/04 14:31 UTC Status: Stopped Type: container Profiles: default Snapshots: snap0 (taken at 2021/05/08 01:54 UTC) (stateless)
コンテナのコピー
イメージ作成用のコンテナを作ります。
本番コンテナからでも良かったのですが一応コピーします。
masashi@PC-ubuntu:~$ lxc copy firefly/snap0 firefly-backup
masashi@PC-ubuntu:~$ lxc list +----------------+---------+---------------------+-----------------------------------------------+-----------+-----------+ | NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS | +----------------+---------+---------------------+-----------------------------------------------+-----------+-----------+ | debian | RUNNING | 10.28.57.205 (eth0) | fd42:24ab:b835:ae42:216:3eff:fe98:2560 (eth0) | CONTAINER | 0 | +----------------+---------+---------------------+-----------------------------------------------+-----------+-----------+ | dokuwiki | RUNNING | 10.28.57.198 (eth0) | fd42:24ab:b835:ae42:216:3eff:fe2e:4f6a (eth0) | CONTAINER | 0 | +----------------+---------+---------------------+-----------------------------------------------+-----------+-----------+ | firefly | STOPPED | | | CONTAINER | 1 | +----------------+---------+---------------------+-----------------------------------------------+-----------+-----------+ | firefly-backup | RUNNING | 10.28.57.192 (eth0) | fd42:24ab:b835:ae42:216:3eff:feca:aaf9 (eth0) | CONTAINER | 0 | +----------------+---------+---------------------+-----------------------------------------------+-----------+-----------+ | lxd-proxy | RUNNING | 10.28.57.177 (eth0) | fd42:24ab:b835:ae42:216:3eff:fecd:d475 (eth0) | CONTAINER | 0 | +----------------+---------+---------------------+-----------------------------------------------+-----------+-----------+
できました。
イメージ作成前の準備
イメージ用のコンテナはDBを空にしておきたいのでスタートしてDBを初期化しておきます。
masashi@PC-ubuntu:~$ lxc start firefly-backup
コンテナ内でDBを初期化します。
php artisanコマンドを使いますが、Fireflyの話なので割愛。
masashi@PC-ubuntu:~$ lxc exec firefly-backup bash
コピーからイメージ作成
再度コンテナを止めてイメージを作成します。
masashi@PC-ubuntu:~$ lxc stop firefly-backup
masashi@PC-ubuntu:~$ lxc publish firefly-backup --alias firefly-image
Instance published with fingerprint: 754669c7e39f9a7cbb22a1c72ef8935b18a75f3c72c41d2f88e8db29305ae071
イメージ作成ができました。
ここからデプロイすればいつでもFireflyが復旧できますね。
masashi@PC-ubuntu:~$ lxc image list +---------------+--------------+--------+---------------------------------------------+--------------+-----------+----------+------------------------------+ | ALIAS | FINGERPRINT | PUBLIC | DESCRIPTION | ARCHITECTURE | TYPE | SIZE | UPLOAD DATE | +---------------+--------------+--------+---------------------------------------------+--------------+-----------+----------+------------------------------+ | firefly-image | 754669c7e39f | no | Ubuntu 20.04 LTS server (20210201) | x86_64 | CONTAINER | 873.23MB | May 8, 2021 at 2:32am (UTC) | +---------------+--------------+--------+---------------------------------------------+--------------+-----------+----------+------------------------------+ | | 90e2d54028dd | no | ubuntu 20.04 LTS amd64 (release) (20210429) | x86_64 | CONTAINER | 361.08MB | Apr 30, 2021 at 8:52am (UTC) | +---------------+--------------+--------+---------------------------------------------+--------------+-----------+----------+------------------------------+
ホスト環境にコピー
このままだとLXD環境にはイメージが残っていますが、また壊れたら回収できなくなるので今のうちにホスト側にもコピーしておきます。
masashi@PC-ubuntu:~$ lxc image export firefly-image .
masashi@PC-ubuntu:~$ ls -ltrh … -rw-rw-r-- 1 masashi masashi 874M 5月 8 12:26 754669c7e39f9a7cbb22a1c72ef8935b18a75f3c72c41d2f88e8db29305ae071.tar.gz
fingerprintの名前でファイルコピーができました。
結構サイズが大きいのでオンラインストレージに逃がすのはちょっと気が引けますね。
家のNASにでも退避させておきましょう。
ファイル名も分かりやすいように変えておきます。
まとめ
今回はカスタムコンテナのイメージ作成を行いました。
デプロイの確認はしていませんが別の機会に試したいと思います。
難しいことはやってませんが、LXDもナレッジが結構あるのでイメージ作成も詰まることなくできました。
別のLXDホストへデプロイ出来るかといった課題は残っていますが今回はここまでです。
しかしコンテナの技術は触ってて面白いですね。