2017-03-09 2 views
-1

에 복사 할 때 복사되지 디렉토리에 대한 사용 권한은 관련 내 Dockerfile의 일부입니다 내 고정 표시기-작성에도커 : 파일이 여기에 볼륨

RUN cd /path/to/future/volume \ 
&& if [ ! -d "init_data" ]; then tar xvzf init_data.tar.gz; fi \ 
&& chmod 775 init_data 

, 나는에/경로 매핑 명명 된 볼륨을 사용하고 있습니다/to/future/volume (my-volume :/path/to/future/volume)이므로 Docker는/path/to/future/volume의 모든 파일을 호스트 디렉토리로 복사합니다.

복사본 자체가 작동합니다 (그리고 모든 사용자와 그룹의 소유권이 좋음) 내 chmod 제외하고 775 init_data가 적용되지 않습니다.

볼륨을 만든 후 컨테이너와 볼륨에서 작동하는 "chmod 775 init_data"가 나타나면 빌드 할 때 그룹에 대한 쓰기 권한을 설정해야합니다.

왜 이런 일이 발생하며 어떻게 해결할 수 있습니까?

+0

볼륨을 처음 만든 후 Dockerfile에 chmod를 추가 했습니까? – BMitch

+0

그래, "docker-up up -d"하기 전에 볼륨을 제거하려고했는데 올바른 권한이 볼륨 안의 init_data에 적용되었으므로 모두 좋습니다. 기존의 명명 된 볼륨을 사용하여 컨테이너를 실행할 때 정확한 복사/덮어 쓰기/병합 규칙에 대해 확신하지 못합니다 (볼륨이 이미 존재할 때 전혀 복사되지 않을 수도 있습니다). – Tristan

+0

볼륨이 내부에있는 데이터가 들어간 이후 볼륨이 올바르지 않습니다. 볼륨이 완전히 비어있는 경우 볼륨이 존재하지 않는 경우에도 볼륨이 초기화됩니다. – BMitch

답변

1

Docker는 명명 된 볼륨이 비어있을 때만 초기화합니다. 내부에 데이터가 있으면 초기화 단계를 건너 뜁니다 (그렇지 않으면 데이터를 덮어 쓰거나 삭제할 위험이 있습니다).

새 이미지에서 도입 된 변경 사항을 보려면 이전 컨테이너뿐만 아니라 이전 볼륨도 제거해야합니다.

호스트 볼륨 (도커 호스트에서 컨테이너로 직접 경로 바인딩)에는 적용되지 않습니다. 비어있는 경우에도 호스트 볼륨은 초기화되지 않습니다.

관련 문제