1. ホーム
  2. docker

[解決済み] データのみのボリュームをあるホストから別のホストに移植するには?

2022-05-10 21:57:23

質問

のDockerドキュメントで説明されているように ボリュームを使用する という概念があり、いわゆる データのみ コンテナは、データ専用コンテナが実際に実行されているかどうかに関係なく、他の複数のコンテナにマウント可能なボリュームを提供します。

基本的に、これは素晴らしいことだと思います。しかし、私が理解していないことが 1 つあります。

これらのボリューム(これは ではない ドキュメントにあるように、移植性の理由からホスト上のフォルダに明示的にマッピングされていません) は、Docker によってホスト上のいくつかの内部フォルダ ( /var/docker/volumes/… ).

そのようなボリュームを使用し、それをあるホストから別のホストに移行する必要があると仮定した場合、ボリュームをどのように移植するのでしょうか。AFAICS には一意の ID がありますが、ボリュームとそれに対応するデータ専用コンテナーを新しいホストにコピーすることはできますか? コピーするファイルはどのように見つければいいのでしょうか?あるいは、私がまだ発見していない、Docker に組み込まれたサポートがあるのでしょうか?

どのように解決するのですか?

公式の回答は、以下のセクションでご覧になれます。 "データ ボリュームのバックアップ、復元、または移行"。 :

BACKUPです。

sudo docker run --rm --volumes-from DATA -v $(pwd):/backup busybox tar cvf /backup/backup.tar /data

  • --rm : 終了時にコンテナを削除する
  • --volumes-from DATA : DATA コンテナによって共有されるボリュームにアタッチします。
  • -v $(pwd):/backup : カレントディレクトリをコンテナにマウントする。
  • busybox : 小さなシンプルなイメージ - クイックメンテナンスに適しています。
  • tar cvf /backup/backup.tar /data : /data ディレクトリにあるすべてのファイルの圧縮されていない tar ファイルを作成します。

RESTOREを行います。

# create a new data container
$ sudo docker create -v /data --name DATA2 busybox true
# untar the backup files into the new container᾿s data volume
$ sudo docker run --rm --volumes-from DATA2 -v $(pwd):/backup busybox tar xvf /backup/backup.tar
data/
data/sven.txt
# compare to the original container
$ sudo docker run --rm --volumes-from DATA -v `pwd`:/backup busybox ls /data
sven.txt