実行中のDockerコンテナーをバックアップすることはできますか? export
コマンドはそれを行うのに適していますか?
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分
ここに追加すると、要約から質問に回答したことがわかります。ソロモンありがとう!
export
にはいくつかの制限があります:データボリュームをエクスポートしません。
ここにdata volumeの意味:
VOLUME
が定義されています。-v /webapp
データの詳細: https://docs.docker.com/userguide/dockervolumes/
この状況を処理する方法は、「-volumes-from」パラメーターを使用して新しいコンテナーを開始し、そのコンテナーをフックして、データにアクセスできるようにすることです。ボリューム。
例:
docker run -it --volumes-from target_container ubuntu bash
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"
docker commit
は、コンテナをバックアップするための好ましい方法です(開始または停止)。名前を付けることができる画像を作成します。
docker commit - p <container_id> <backup-name>