たとえばmariadbやWordPress等のコンテナイメージを。
Podmanのコンテナで使用すると。
-vオプションを明示的に使用しなくても、特定のマウントポイントに匿名ボリュームがマウントされて、データが永続化される(ポッドやコンテナを削除してもデータが消えない状態になる)ようです。
では、どのマウントポイントが永続化されているのでしょう?
調べてみました。
コンテナ内でボリュームがマウントされたマウントポイントを調べるコマンド
ずばり。
rem コンテナ名を追加して下さい
podman container inspect --format {{.Mounts}}
こちらのコマンドで出力された、JSONから拾えると思います。
こちらと照合するとコマンドの出力結果のひとつめの項目「volume」は”Type”を表し、ふたつめが”Name”・・・・そして4つ目の項目「/var/www/html」が”Destination”を表します。
よって、4つ目の項目を拾えば、それぞれ
- wp-webコンテナは、/var/www/htmlにボリュームをマウント
- wp-dbコンテナは、/var/lib/mysqlにボリュームをマウント
している事がわかります。
細かくパースしたい場合、外部のJSONパーサーが必要?
podmanのinspectコマンドで、マウントポイントの情報が得られることはわかりました。
しかし、podmanのコマンド単体では、細かい形式を指定して結果を出力することは難しいようです。
たとえば、Mounts以下の配列から、Dstinationのみ抽出したい・・・というのは–format オプションの引数を変えても難しそうです。
本気でそのような事がやりた場合、JSON全体の出力結果を、パイプでJSONパーサーに渡して、そこから取り出す必要がありそうです。
Windows版のPodman.exeを使用している場合、PowerShellでJSON出力を読み込んでなんとかできるかもしれませんね。(他人事
まあ、結果としてどのコンテナが、どのマウントポイントを使用しているかわかりましたので、今のところ良しとします。
現在のPodman Ver.4.3の仕様では、コンテナを停止・削除して、新しくコンテナを作りなおしても、同じボリュームが使われている限り、データが消えずに残ります。
よって、上記のマウントポイントのデータを保存すれば、同じ内容のポッドを作り直す事ができると思います。ただし、通常のファイルに限ります。
たとえばデータベースなど、動作中のプロセスの状態をファイルに保持している場合は、別のポッドに持ってゆくのは難しいとわかりました。※22.11.20追記
そのようなわけで、通常のファイルに限っては、ポッドのデータをバックアップする対象として、上記のマウントポイントのデータを保存すれば基本的に大丈夫なのかなと思います。
具体的なバックアップ手順はこちらの記事になります。