본문 바로가기

[DevOps]/[Docker]

[Docker] 컨테이너 인프라를 위한 DevOps 환경 구축-3.Docker volume(feat. 정보산업진흥원)

728x90

< Lesson 4. Docker Bind Mount & Volume >

 

개념 설명 : 

컨테이너에 생성되는 모든 파일은 컨테이너 레이어에 저장된다. 이 데이터들의 런타임은 컨테이너와 동일하다. 따라서 컨테이너가 종료되는 즉시 컨테이너에 생성된 파일들은 사라지게 되므로, 이 데이터를 영구적으로 저장하기 위해서는 볼륨을 반드시 사용해야 한다.

docker에서 볼륨을 사용하는 방법은 bind mount, volume 2가지가 있다.

1) Bind Mount : 

docker 초기부터 사용한 방법. host의 특정 디렉토리와 컨테이너의 디렉토리를 연결하는 방식이다. 쉽게 사용할 수 있지만 docker에 의해 관리되는 것이 아니기 때문에 따로 관리하지 않으면 관리하기가 쉽지 않다. 또한 마찬가지 보안문제와 호스트 파일시스템에 대한 의존성 문제가 발생 할 수 있는 것이 단점이다. 

2) Volume :

volumed은 docker에 의해서 관리되는 storage이다. docker 명령에 의해 관리할 수 있으며, 다양한 드라이버를 지원하고, image에서 volume부분에 값이 지정되어 있다면, 컨테이너를 실행할 때 역시 마찬가지로 volume을 지정해 주어야 한다.

Bind Mount 사용 : 

$ mkdir ~/bm1 ; touch ~/bm1/filea.txt

 

$ docker run -itd --name os3 -v ~bm1:/tmp/mount centos:latest

 

$ docker exec os3 ls /tmp/mount

Volume 사용 : 

$ docker volume

 

$ docker volume create vol1

 

$ docker volume ls

$ docker inspect vol1

$ docker run -itd --name os5 -v vol1:/tmp/volume centos:latest

os5를 inspect해보면 vol1이 마운트 된 것을 알 수 있다. 

$ docker run -itd --name web3 -v vol1:/usr/local/apache2/htdocs:ro httpd:latest

docker exec os5 cat /tmp/volume/index.html

 

 

 

 

 

728x90