2017-03-02 9 views
2

주어진 컨테이너 실행간에 유지하려는 .json 파일이있는 상황이 있습니다. 또한이 파일은 실행 중에 컨테이너에 추가되어야합니다.호스트 컴퓨터에서 Docker Container로 파일 하나를 공유하고 Container를 r + w로 동일한 파일에 저장

다음과 같이 지금까지 사용했던 구문은 다음과 같습니다 (I 고양이 내용 내부와 컨테이너 외부 그것은 동일합니다 확인하는 수 있지만)

docker run -d -p 3001:3001 -v /usr/bob/database.json:/app/data/database.json:rw --name=myapp appImage 

아무것도 파일에 삽입하지됩니다. 나는 도커를 실행중인 루트 사용자 (예 : 모범 사례가 아님)가 해당 폴더의 모든 파일을 소유하고 있으며 전체 rwx를 보유하고 있음을 확인했습니다.

docker run -d -p 3001:3001 -v /usr/bob:/app/data --name=myapp appImage 

사람이 차이를 설명 할 수 : I 폴더 수준의 예에서 결합하는 경우 작업을 무엇

은?

단일 파일 대신 폴더에 대한 공유 액세스가 훨씬 정확하지 않으며 응용 프로그램에서 구조적 변경도 발생한다고 생각합니다 (예 : 언급 된 .json 파일과 함께 여러 파일이있는 소스 제어).).

미리 알려 주셔서 감사합니다.

감사합니다, 볼륨이 용기 내부의 특정 아이 노드를 탑재 같은 파일을 설치

앤드류

+0

는 비지 박스 이미지를 사용하여, 나를 위해 잘 작동하고, 동일한 테스트를했다. –

+0

@FarhadFarahi 이것은 하나 이상의 선택 사항이있는 여러 부분으로 구성된 질문입니다. 정확히 무엇을 테스트 했습니까? 감사. –

답변

3

. 파일을 수정하는 많은 도구는 파일의 새 복사본을 작성할 때 inode를 변경합니다. 이 새로운 inode는 해당 파일 이름에 대한 새 포인터로 디렉토리에 저장됩니다. 디렉토리가 마운트되면 호스트의 변경 사항을 볼 수 있지만 호스트의 inode와 호스트 디렉토리의 포인터는 변경되지 않으므로 컨테이너 내부에서만 변경 사항을 볼 수 있습니다.

는 볼륨에 부두 노동자의 튜토리얼이 동작에 대한 자세한 내용은 다음과 같습니다 https://docs.docker.com/engine/tutorials/dockervolumes

+0

훌륭해 - 고마워요. @BMitch. 내가 의심 스러웠던 이유는 이전에이 접근 방식을 사용했다고 생각했기 때문에 이제는 작동을 멈췄습니다. 이 링크는 변경 사항이 언제 발생했는지 (V1.1부터) 설명합니다. 문제를 해결할 수는 없지만 문제를 해결하고 아무 것도 놓치지 않을 수 있음을 알려줍니다. :) –