2017-01-04 1 views
1

私はDockerを見て、その周りを頭で囲んでいるので、私はその概念を誤解しているかもしれません。データとともにコンテナをエクスポートして、別のコンピュータに完全なコピーを作成することはできますか?

sebp/elk(ElasticSearch-Logstash-Kibana)をインストールしていて、動作中のコンテナを実行しています。私はいくつかのインデックスを設定し、いくつかのデータをlogstashに投稿しました。これはコンテナに保存されています。コンテナを再起動すると、すべてが正常に動作します。今私はコンテナをそのままエクスポートし、私が設定した設定とデータを持つ別のコンピュータで起動することに興味があります。

私はexportコンテナを試しました。import新しいイメージとして、run新しいイメージからのコンテナです。コンテナは機能しますが、元のコンテナに入れたすべてのデータがなくても新しいコンテナとして起動します。

私はまた、新しいイメージからコンテナをsave、その後、画像への私の変更をcommit画像をしようとしたloadそれは再び、その後run。それも動作しますが、データは一切ありません。

元のコンテナの場合は、ボリュームがマウントされていることがわかりました。そのため、elasticsearchデータを.tarファイルにエクスポートしてから新しいコンテナにインポートする必要があります。しかし、それはどちらもうまくいきませんでした。

これは元の容器のマウント検査です:

docker run --rm --volumes-from elk -v $(pwd):/volumes original/sebp/elk:exported tar cvf /volumes/elk-volume.tar /var/lib/elasticsearch 

...そしてこれは私がそれをインポートしようとした方法である:ここでは

"Mounts": [ 
     { 
      "Name": "fe17e920f9d17e177ac899b1617a8c51231c8a3b34007f463d082e5be2677412", 
      "Source": "/var/lib/docker/volumes/fe17e920f9d17e177ac899b1617a8c51231c8a3b34007f463d082e5be2677412/_data", 
      "Destination": "/var/lib/elasticsearch", 
      "Driver": "local", 
      "Mode": "", 
      "RW": true, 
      "Propagation": "" 
     } 
    ] 

は、私はそれをエクスポートしようとした方法です。

docker run --rm --volumes-from elk-imported -v $(pwd):/volumes original/sebp/elk:exported bash -c "cd /volumes && tar xvf /volumes/elk-volume.tar --strip 1" 

Dockerコンテナをエクスポートして、データとすべてを含む正確なコピーを取得することは可能ですか?私はこの問題に間違った方法で近づいていますか?

答えて

0

あなたのアプローチは正しいです。docker exportコマンドは、コンテナに関連付けられたボリュームの内容をエクスポートしないので、コンテナをバックアップボリュームデータよりもエクスポートする必要があります。

ボリューム復元を実行する前に、elkをインポートしたコンテナが既に実行されていることを確認してください。

docker run -v /volumes --name elk-imported original/sebp/elk:exported /bin/bash 
docker run --rm --volumes-from elk-imported -v $(pwd):/volumes original/sebp/elk:exported bash -c "cd /volumes && tar xvf /volumes/elk-volume.tar --strip 1" 
関連する問題