Podmanのコンテナからマウントされた匿名ボリュームのマウントポイントを調べるには

たとえば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追記

そのようなわけで、通常のファイルに限っては、ポッドのデータをバックアップする対象として、上記のマウントポイントのデータを保存すれば基本的に大丈夫なのかなと思います。

具体的なバックアップ手順はこちらの記事になります。

スポンサーリンク

フォローする

スポンサーリンク