2017-05-22 4 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

.

첫째, 볼륨 생성이 같은

docker volume create --name shared 

그런 다음, 실행 용기 :

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

이 방법 /shared-folder이 두 용기 사이에 동기화됩니다.

here

이이 내가 하나의 명령을 사용하여 폴더를 항만 노동자 사이을 복사하는 데 사용하는 것입니다

+0

볼륨을 만들었습니다. "docker run -v shared :/shared-folder "을 실행하면 "a75df1c6cfce : 최신 '로컬'이미지를 찾을 수 없습니다. 나는 이것을 실행 컨테이너에서하고 싶습니다. 무엇을해야합니까 ?? –

0

docker cp 명령은 두 컨테이너 사이가 아닌 컨테이너와 호스트 사이에서만 작동합니다. 이를 사용하려면 호스트에 복사본이 있어야합니다. (모두 용기 타르를 포함하면 둘 사이에 파일을 이동

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하는 첫 번째 명령에 .을 변경할 수 있습니다 : 당신은 그것에 대해 volume를 사용해야합니다

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-