web-dev-qa-db-ja.com

実行中のDockerコンテナーをバックアップしますか?

実行中のDockerコンテナーをバックアップすることはできますか? exportコマンドはそれを行うのに適していますか?

58
Slava V

1人の友人がコメントで投稿

こんにちはSlava、質問が閉じられて申し訳ありません。記録のために、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の将来のバージョンで修正される予定です。 – ソロモンハイクス13年4月2日6時35分

ここに追加すると、要約から質問に回答したことがわかります。ソロモンありがとう!

36
JuliandotNut

exportにはいくつかの制限があります:データボリュームをエクスポートしません

ここにdata volumeの意味:

  1. 画像のDockerfileにVOLUMEが定義されています。
  2. コンテナは次のようなパラメータで始まります:-v /webapp

データの詳細: https://docs.docker.com/userguide/dockervolumes/

この状況を処理する方法は、「-volumes-from」パラメーターを使用して新しいコンテナーを開始し、そのコンテナーをフックして、データにアクセスできるようにすることです。ボリューム。

例:

  1. データにアクセス:(bashで)

docker run -it --volumes-from target_container ubuntu bash

  1. ホストへのバックアップ:(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"

7
semicircle21

docker commitは、コンテナをバックアップするための好ましい方法です(開始または停止)。名前を付けることができる画像を作成します。

docker commit - p <container_id> <backup-name>
0
Brian Ogden