この投稿では、docker Container のバックアップ (スナップショット) を取得して復元する手順の概要を説明しています。この投稿では、主にコンテナーをイメージとしてコミットする方法について説明していることに注意してください。これは、データ ボリュームを使用しないコンテナーで機能します。データ量のあるコンテナの場合、データ量のバックアップは別途取る必要があります。
Docker コンテナのバックアップ
1. 必要なコンテナーをイメージとしてコミットします
# docker commit -p [container-id] backup01 sha256:89682d4xxxxxx
これで、新しいイメージ backup01 が作成されます。これはデータ量をカバーしませんのでご注意ください。データ ボリューム (存在する場合) のバックアップを別途取る必要があります。
コンテナーのこのデータ ディレクトリ (データ ボリュームの場所) を知るには、コマンド「docker inspect container-name」を使用します '。 「マウント」というセクションが表示されます。 「ソース」に記載されている場所は、データ ボリュームです。このフォルダ (ここでは /site) を直接バックアップして、データ ボリュームのバックアップを取得できます。
"Mounts": [ { "Source": "/site", "Destination": "/usr/xx/xxx/xxxs", "Mode": "", "RW": true, "Propagation": "rprivate"
2. 次のコマンドを使用して、イメージ backup01 を tar ファイルに保存できます:
# docker save -o backup01.tar backup01
# ls -al | grep back -rw------- 1 root root 178697728 Mar 31 23:35 backup01.tar
tar ファイルを NFS マウント ポイントに保存することもできます。もう 1 つのオプションは、イメージ backup01 をローカル レジストリに直接プッシュすることです。バックアップ イメージをプッシュする前に、適切にタグ付けする必要があります。
# docker tag backup01 localhost:5000/backup-image:v1
この例では、localhost はローカル レジストリが配置されているホスト名であり、5000 はレジストリがリッスンするポート番号です。レジストリとは別のホストにある Docker エンジンで作業している場合は、正しいホストを指すようにホスト名を変更する必要があります。リポジトリとタグ名 (この例では backup-image:v1) が有効なタグであるためには、すべて小文字にする必要があることに注意してください。
# docker push backup-image:v1
Docker コンテナの復元
1. 次のコマンドを使用して、バックアップ tar ファイルからイメージを抽出できます
# docker load -i /tmp/backup01.tar ff91b8b5abb1: Loading layer [==================================================>] 2.56 kB/2.56 kB Loaded image: backup01:latest
「docker run」を使用して、このイメージからコンテナを作成できます 」。元のコンテナーにデータ ボリュームがあった場合。データ ボリュームも復元し、データ ボリュームでコンテナーを実行する必要があります (docker run -v )
2. プッシュされた画像の場合。直接引くことができます。
# docker pull localhost:5000/backup-image:v1