%20%E3%81%AE%E7%9B%AE%E7%9A%84%E3%81%AB%E9%81%A9%E3%81%97%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%81%8B%3F%20(%E4%BE%8B%3A%20%2Fdev%2Fsdb1%20%40fstab%20%E5%86%85%E3%81%AE%20%2Fvar%2Flib%2Fdocker%2Fvolumes%2F).png)
すべてのドキュメントとスプレッドシートのインフラストラクチャを、古いスタンドアロンの 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 および権限に注意する必要があります。設定によっては、多少の労力が必要になる場合があります。