実行中の Docker コンテナーをバックアップすることはできますか? コマンドはexport
それを行うのに適していますか?
4 に答える
コメントで 1 人の友人によって投稿されました。
こんにちはスラバ、質問が閉じられて申し訳ありません。記録として、Slava は Linux コンテナーのランタイムである docker.io について話しています。はい、docker export
適切なアプローチです。コンテナ ファイルシステム全体の状態の tarball を生成し、stdout にダンプします。そう
docker export $CONTAINER_ID > $CONTAINER_ID-backup.tar
使用可能な tarball が生成されます。tarball を再インポートすることができます
docker import - slava/$CONTAINER_ID-backup < $CONTAINER_ID-backup.tar
元のメタデータ (元の画像の ID など) が失われることに注意してください。これは、docker の将来のバージョンで修正される予定です。— ソロモン・ハイクス
ここに追加して、要約から質問が回答されたことを確認できるようにします。ありがとうソロモン!
export
にはいくつかの制限があります。データ ボリュームはエクスポートされません。
データ量の意味は次のとおりです。
VOLUME
イメージの Dockerfile に が定義されています。- コンテナーは、次のようなパラメーターで開始されます。
-v /webapp
データの詳細: https://docs.docker.com/userguide/dockervolumes/
この状況を処理する方法は、「--volumes-from」パラメーターを使用して新しいコンテナーを開始し、そのコンテナーをフックして、データ ボリュームにアクセスできるようにすることです。
例:
- データにアクセスします: (bash で)
docker run -it --volumes-from target_container ubuntu bash
- ホストへのバックアップ: (postgres コンテナー)
docker run -it --volumes-from some_postgres -v /host/path:/container/path --rm ubuntu bash -c "tar -cvf /container/path/postgres-backup.tar /var/lib/postgresql/data"