도커 볼륨은 컨테이너의 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 설정을 이용한다.