2016-11-16 2 views
1

도커를 사용하고 있는데 컨테이너 파일을 호스트 파일에 마운트하려고하면 이상한 동작이 발생합니다.도커 파일 마운트 이해

위의 명령은 foo.txt 파일을/var/tmp 디렉토리에 컨테이너에 작성하는 myapp 컨테이너를 실행합니다. myapp이 죽은 후에이 파일을 호스트에 보관해야하므로 마운트 지점을 만듭니다.

내 문제는 호스트에서 파일로 foo.txt를 만드는 대신 "foo.txt"라는 빈 디렉토리 (내부에는 아무 것도 없음)로 끝납니다.

그러나 호스트에 빈 텍스트 파일 foo.txt를 작성하고 myapp를 다시 실행하면 예상대로 작동합니다.

내 질문은, 도커로 파일 마운트를 사용할 때 컨테이너를 시작하기 전에 호스트에 파일을 만들어야합니까?

나는 뭔가를 놓쳤다 고 생각합니다. 설명해 주셔서 감사합니다.

+0

'docker run -v $ (pwd) :/var/tmp myapp'와 같은 폴더 마운트를 만듭니다. 그런 다음 컨테이너의'/ var/tmp'에 foo.txt를 만들면 호스트의 작업 디렉토리에 유지됩니다. – johnharris85

답변

0

호스트 볼륨을 데이터 볼륨으로 마운트하려면 파일이 있어야합니다. 그렇지 않으면 docker가 디렉토리를 만들고 마운트합니다.

에서 : https://docs.docker.com/engine/tutorials/dockervolumes/

마운트 데이터 음량이 -v 플래그는 하나의 파일을 마운트 할 수 있습니다

같은 호스트 파일 - 대신 단지 디렉토리 - 호스트 시스템에서.

$ docker run --rm -it -v ~/.bash_history:/root/.bash_history ubuntu /bin/bash 

파일이 호스트에 존재하지 않는다는 사실은 결코 알 수 없습니다.

주석에 제안 된대로 컨테이너에 쓰기를 원할 경우 디렉토리를 마운트하는 것이 좋습니다.

감사합니다.

관련 문제