2017-09-12 10 views
0

複数のDockerコンテナを実行している複数のマシンをバックアップする総合的なアプローチを採用したいと考えています。たとえば、Postgresデータベースなどを実行するものもあります。さまざまな種類のボリュームに特定のバックアップコマンドを持たなくても、このシステムをバックアップしたいと考えています。バックアップ用のDockerボリューム

カスタムの外部スクリプトを使用しても問題ありません。コンテナに信号を送るか、Dockerコマンドを実行しますが、特定のイメージやイメージの種類に固有のものは避けたいと思っています。 Postgresの例では、Postgres固有のコマンドをデータベースのバックアップとして実行することを提案しています。これは、作成しようとしているバックアップソリューションの設計目標に反するものです。

既存のDockerイメージから開始して拡張することによって実装するのが合理的に簡単である限り、Dockerイメージに制限を課す必要があれば問題ありません。

これを解決する方法についてのご意見はありますか?

私はDockerのもとでPostgresデータベースをバックアップする方法の解決策を探しているわけではないことを強調したいと思います。私は具体的には、のボリュームをバックアップする方法を探しています。その内容はわからなくても、そのデータに対して特定のコマンドを実行する必要はありません。

(したがって、それはここに属している、私はこの質問は、SOまたはserverfaultのに属していたかどうかを検討し、私は、これは開発者が解決すべき問題であると信じコンセンサスがそうであるならば、それを移動もラクラク。)

EDIT:へ明らかに、私はこの質問で説明されているものに似た何かをしたいです How to deal with persistent storage (e.g. databases) in docker しかし、受け入れられた答えのアプローチを使用することは、Postgres(と私は他のデータベースコンテナは確かに)ドキュメントに従って動作しません。

答えて

1

私は、カスタムソリューション、ホリスティック、マルチマシン、マルチコンテナ、アプリケーション/コンテナにとらわれないアプローチがあると懐疑的です。私の視点からは、最初に必要な多くのオーケストレーション活動があります。とにかくKubernetesのようなものを使っていないのだろうと思います。それはおそらく、独自のバックアップソリューションが付いているからです。

単一マシンの場合、コンテナのデータ、設定、最終的なビルドスクリプトを1つのディレクトリツリー(たとえば/docker/)に保存し、標準のファイルベースのバックアッププログラムを使用してルートディレクトリをバックアップすることをおすすめします。

  • docker-composeを使用してコンテナを管理してください。これにより、コンフィギュレーションを保存したり、ビルドオプションをファイルに保存したりすることができます。私は各サービスごとに個別の作成ファイルを持っていますが、1つのファイルも機能します。
  • 各サービスのサブディレクトリがあります。マウントバインドマウントディレクトリは、そこにあるコンテナのボリュームです。ビルドプロセスをより徹底的に変更する必要がある場合は、スクリプト、ソース、Dockerfilesなどもそこに簡単に保存できます。
  • コンテナは一時的に使用されるため、すべての永続データはバインドマウントに存在し、したがってメインドッカーディレクトリに存在している必要があります。
+0

ありがとうございました!私は同意し、あなたが書いたもののほとんどすべてをやっています。私が解決していない1つの問題は、データボリューム(例えばデータベース)をコピーするだけで状態をバックアップできないコンテナをどう扱うかです。 – Krumelur

関連する問題