You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 4 Next »

도커 볼륨은 컨테이너의 UFS(union file system)가 아닌 디렉토리로 

컨테이너에 바인드 마운틴된(bind mounted) 호스트의 일반 디텍토리를 의미한다.


볼륨 초기설정은 세가지 방법이 존재한다.

■ -v 를 이용한 볼륨 설정

# docker run -i -t --name volume-container -v /data debian /bin/bash
root@49340c1e5df1:/#

컨테이너의 내부에 /data 디렉토리가 볼륨으로 만들어짐.

/data 디렉토리 내부의 모든 파일은 볼륨으로 복사.

위치 확인을 위한 호스트에서 docker inspect 을 실행하면 확인 할 수 있음.

# docker inspect -f {{.Mounts}} volume-container
[{volume 04605f0875bfd694165292622c72ab21... /var/lib/docker/volumes/04605f0875bfd694165292622c72ab21f09934bc04e6f39ee6440cd8f8992883/_data /data local  true }]

컨테이너의 /data 볼륨은 호스트의 /var/lib/docker/volumes/{컨테이너}/_data 디렉토리로 연결됨.


테스트를 위하여 호스트 에서 volume-test-file 빈 파일을 생성 하였다.

물론, 경로는 /var/lib/docker/volumes/{컨테이너}/_data 에서 생성.

# touch volume-test-file
# ls
volume-test-file


# docker exec -it volume-container bash
root@49340c1e5df1:/# cd /data
root@49340c1e5df1:/data# ls
volume-test-file


반대로 컨테이너 내에서 volume-test-container 빈 파일 생성 하였다.

역시, 경로는 /data/ 에서 생성.

# touch volume-test-container
# ls
volume-test-container  volume-test-file


# pwd
/var/lib/docker/volumes/04605f0875bfd694165292622c72ab21f09934bc04e6f39ee6440cd8f8992883/_data
# ls
volume-test-container  volume-test-file


이제 우리는 실제 운영중인 오픈소스를 Docker 기반 이미지화를 만들수 있다.


■ Dockerfile 를 이용한 볼륨설정

도커파일에서 VOLUME 설정을 이용한다.

FROM debian:wheezy
VOLUME /data


■ -v HOST_DIR:CONTAINER_DIR 를 사용한 볼륨 설정

-v HOST_DIR : CONTAINER_DIR를 명시하여 호스트에서 바인딩하려는 디렉토리를 지정.

# docker run -v /home/adrian/data:/data debian ls /data

호스트의 /home/adrian/data 디렉토리를 컨테이너 의 /data로 마운트 하게 된다.


특정 호스트의 디렉토리가 볼륨에서 사용되는것을 바인드바운팅(bind mounting)이라고 한다.

기술적 모든 볼륨은 바인드되어 마운트 되기 때문에 오해가 있을 수 있다. 

도커가 소유하는 디렉토리안에 숨겨지는것이 아니라 마운트 지점이 명시적으로 나타난다는 것이 다르다.



  • No labels