すべての Docker ボリュームを 1 つのパーティションにまとめることはできますか? また、バックアップ (クローン) の目的に適していますか? (例: /dev/sdb1 @fstab 内の /var/lib/docker/volumes/)

すべての Docker ボリュームを 1 つのパーティションにまとめることはできますか? また、バックアップ (クローン) の目的に適していますか? (例: /dev/sdb1 @fstab 内の /var/lib/docker/volumes/)

すべてのドキュメントとスプレッドシートのインフラストラクチャを、古いスタンドアロンの Samba サーバーから、人気のあるセルフホスト ソリューションの 1 つに移行することを考えており、エラーが発生しやすい簡単な (再) インストールを長期間実行できるようにしたいと考えています。例に基づいて、独自の docker-compose ファイルを使用して最初のインストールを簡単に実行できるようにしました。

これには、DB、Web サーバー、証明書ジェネレーター、検証ツールなど、多数のコンテナーがあります。

私のような Docker 初心者にとっては、バックアップが非常に複雑に見えます。特に、一部の Web サイトでは /var/lib/docker/volumes/ に触れるべきではないと書かれており、パッケージ マネージャーや docker install/updates によって壊れるのではないかと心配しています。

私にとって、より速く簡単な方法は次のようになります。

  • systemctl ドッカーを停止する

  • docker save(s);docker export(s) コンテナを tar にエクスポートする

  • clonezilla /dev/sdb1 を同じサイズのイメージまたはディスクにコピーします (/var/lib/docker/volumes/ が /dev/sdb1 にマウントされている場合)

必要に応じて将来のマシンの新しいサーバーにコピーします。

  • clonezilla イメージ/デバイスを復元し、/var/lib/docker/volumes にマウントします。
  • dockerをインストールして起動する
  • docker load(s); docker import(s) tars

おそらく、db コンテナーがボリュームに接続されず、ログインとバージョン管理が失われるのではないかと心配していますが、ファイルを失うことの方が難しいようです。

私が理解している限りでは、セクターごとのパーティションコピーは数分で完了しますが、数百万のファイルのcp -Rには数時間かかります。これらの手順により、Webに公開するにはセキュリティとパッチを適用する必要があるため、docker-composeを再実行してDBとWebエンジンを更新する方が安全だと感じています。

あなたにとって、より安全だと思うことは何ですか? 速いのは良いことですが、実際には必要ありません。それとも、十分に安全ですか?

ありがとう!

答え1

ボリューム マウントの使用は必須ですか? そうでない場合は、バインド マウントをチェックする必要があります。サーバー A からファイル システムを取得し、それをサーバー B にコピーして、バインド マウントとしてマウントするだけです。

良い面としては、移行の労力は最小限で済み、サーバー上の任意の場所に保存できる可能性があります。/var/lib/docker/volumes に保存する必要はありません。悪い面としては、ユーザー ID とグループ ID および権限に注意する必要があります。設定によっては、多少の労力が必要になる場合があります。

関連情報