2017-05-22 5 views
1

システムに2つのドッカーコンテナがあります。Dockerコンテナとの間でデータをコピーする

ホストシステム自体からあるコンテナから別のコンテナにデータをコピーしたかったのです。

私たちは

docker cp <Source path> <container Id>:path in container 

を使用する必要がホストするコンテナからデータをコピーすることを知っているが、今私は別のコンテナから直接データをコピーしようとしています、それを行うにはどのような方法があります?

私はこれをやってみました。

docker cp <container-1>:/usr/local/nginx/vishnu/vishtest.txt <container-2>:/home/smadmin/vishnusource/ 

しかし、上記のコマンドは、サポートされていないと言ったことに失敗しました。

ローカルマシンにデータをコピーしないでください。

誰もがこれを行うアイデアを持っている、事前に感謝ですか?

+0

はあなたがドッカボリュームを試してみましたか? – Robert

+0

まで私はドッカーのボリュームが一般的な場所であることが分かっています。この場所は、マウントソースを使用してコンテナに照会することができ、target.iをマウントすると、このシナリオで私を助けるためのドッカーのボリュームについて実際にはわかりません。 @ロバート私はここにそれを使用する方法を提案してください? –

+2

コンテナが同じネットワークにある場合はnetcatを使用できます – user2915097

答えて

1

あなたはそのためのvolumeを使用する必要があります。

まず、ボリュームの作成:このようなコンテナを実行し、その後

docker volume create --name shared 

を:

docker run -v shared:/shared-folder <container-1> 
docker run -v shared:/shared-folder <container-2> 

この方法で、/shared-folderは、これら二つの容器の間で同期されます。

here

は、これは私が1つのコマンドを使用してドッカーズ間フォルダをコピーするために使用するものであることが

+0

私はボリュームを作成しました。 "docker run -v shared:/ shared-folder "を実行すると、「a75df1c6cfce:最新の「ローカル」のイメージを見つけることができません」というメッセージが表示されます。私は実行しているコンテナでこれをやりたい –

0

docker cpコマンドは、2つのコンテナ間ではなく、コンテナとホスト間でのみ動作します。これを使用するには、ホスト上にコピーを置く必要があります。

理想的なソリューション二つの容器が同期に残るべき場合には、ボリューム内のデータを格納することです:

docker run --name container-1 -v vishnu-source:/usr/local/nginx/vishnu/ ... 
docker run --name container-2 -v vishnu-source:/home/smadmin/vishnusource/ ... 

また、(両方の容器にはタールが含まれている場合に両者の間でファイルを移動するためのパイプとdocker execを乱用することができますあなたは)一つだけのファイルをコピーすることをにvishtest.txtする最初のコマンドで.を変更することができます。

docker exec container-1 tar -cC /usr/local/nginx/vishnu . \ 
| docker exec -i container-2 tar -xC /home/smadmin/vishnusource/ 
0

を役に立てば幸いそれについて続きを読む:

docker exec container-1 tar -c -f- folder/path/from/root | \ 
docker exec -i container-2 tar -x -f- 
関連する問題