2017-10-10 11 views
0

docker와 관련된 문맥에서 나는 이미지의 레이어가 무엇인지 그리고 맨 위에 쓰여지는 레이어가 무엇인지를 이해합니다. -v 인수없이 도커 컨테이너를 실행하면 볼륨이 생성됩니까? 볼륨을 지정하면 (호스트의 일부 위치에 마운트되지 않음) 볼륨이이 컨테이너의 쓰기 가능 계층이됩니까?Docker의 컨테이너 레이어와 볼륨의 차이점은 무엇입니까?

답변

1

볼륨 및 이미지 레이어는 Docker에서 별도의 개념입니다. 첫 번째 질문은 이 아니며 일 경우 -v이 사용되지 않고 볼륨이 생성되지 않습니다 (Dockerfile 형식에 VOLUME 동사가있는 경우 무시).

볼륨 드라이버가 제공하는 볼륨을 지정하면 (기본값은 컨테이너 파일 시스템의 대상 위치에 바인드 마운트되는 로컬 디렉토리 임)이 볼륨은 이미지 파일과 관련이 없으며 ' Docker 엔진에서 사용중인 백엔드 스토리지 드라이버가 제공하는 "쓰기 가능한"최상위 계층입니다.

특히, 사용중인 스토리지 드라이버는 레이어 스택과 최상위 "r/w"레이어가 관리되는 방식을 제어합니다. 예를 들어, 오버레이 또는 devicemapper 또는 btrfs 드라이버는 이미지 레이어의 마운트를 처리하고 최상위 레이어를 만들고 관리합니다.

볼륨은 파일 시스템 이미지 내의 기존 (또는 생성 된) 경로에 바인드 마운트되어이 외부에서 작동합니다. 컨테이너를 종료하면이 볼륨은 소스 위치 (예 : 로컬/기본 볼륨 드라이버의 경우 /var/lib/docker/volumes/<name>)에 보존되며 마운트 해제 된 계층 스택은 사용중인 스토리지 드라이버를 관리하는 중 수정 된 "상위 계층" 출구 (--rm)에서 컨테이너를 제거한 경우는 예외입니다. 이들은 별도로 관리되는 두 가지 개념이며 볼륨 시스템에는 저장소 백엔드 드라이버와의 상호 작용이 없습니다.

+0

감사합니다. 많은 도움이됩니다. –

0

-v 인수없이 도커 컨테이너를 실행하면 모든 볼륨이 생성됩니까? [container_path] 여기

host_path :

-v는

-v [host_path]에 및 로부터 데이터를 마운트 볼륨을 생성하기위한 아니다 , 데이터를 입력 할 서버 디렉토리 경로

con tainer_path, 컨테이너 디렉토리 경로는

내가 (호스트에서 어떤 위치에 있지 마운트입니다) 볼륨을 지정하면

에서 날짜가이 컨테이너의 쓰기 가능한 계층이 될 볼륨을 수행 마운트?

호스트에 경로가없는 경우. 하지만 당신은 컨테이너에 그것을 mountaed, 여기에 두 가지 경우가 있습니다.

은 CASE 1 : 당신이 원하는 경우 : 실행하는 동안 컨테이너가 해당 파일을 기대하는 경우가 컨테이너에 컴퓨터에서 일부 설정 파일을 마운트 할 경우 그것은

CASE 로그에 2 오류가 발생합니다 컨테이너에서 호스트 기계로 볼륨을 마운트하십시오.cotainer가 실행을 시작하면 호스트 시스템에 폴더가 작성되고 호스트 시스템에 마운트 된 디렉토리에 데이터가 기록됩니다.