Docker 시리즈 (3)
도커 볼륨
- 도커 이미지는 읽기 전용이라서 어떠한 경우에도 변경되지않고, 이미지로 생성된 컨테이너 계층에서 원래 이미지에서 변경된 파일 시스템 등을 저장한다.
- mysql 이미지를 이용해서 만든 컨테이너에 user 테이블과 post 테이블이 생성되어 로그인정보와 게시물정보를 컨테이너 계층에서 저장하고 있는데 만약 컨테이너를 삭제해버리면 해당 정보들은 전부 손실된다. 당연히 복구할 수도 없다. 이럴 때 사용하는 것이 볼륨이다.
- 호스트 볼륨 공유
- 말그대로 도커 컨테이너를 만들 때 호스트의 공유 디렉터리와 컨테이너의 공유 디렉터리를 연결시켜놓는것이다.
# docker run -d \ --name wordpressdb_hostvolume \ -e MYSQL_ROOT_PASSWORD=qwer \ -v /home/wordpress_db:/var/lib/mysql \ mysql:5.7
- 위와 같이 -v옵션을 사용해서 [호스트의 공유 디렉터리]:[컨테이너의 공유 디렉터리]로 표현한다.
- 이러면 앞으로 컨테이너 내부의 /var/lib/mysql에 들어오는 변경된 데이터들은 호스트의 /home/wordpress_db디렉터리에 동기화된다.
- 컨테이너를 삭제해도 호스트 공유 디렉터리엔 삭제 직전 모습이 그대로 남아있다.
- 여기서 /home/wordpress_db 디렉터리가 기존에 없어도 알아서 만들어준다.
- 이미 기존에 있던 호스트 공유 디렉터리에 새로운 컨테이너가 -v옵션으로 걸고 들어오면 새로운 컨테이너의 공유 디렉터리가 기존의 호스트 공유 디렉터리에 마운트한다.
- 말그대로 도커 컨테이너를 만들 때 호스트의 공유 디렉터리와 컨테이너의 공유 디렉터리를 연결시켜놓는것이다.
- 볼륨 컨테이너
- 말그대로 볼륨 용도의 컨테이너를 만드는 방식이다.
# docker run -i -t \ --name volume_from _container \ --volumes-from volume_override \ ubuntu:14.04
- 컨테이너를 만들 때 기존에 있던 컨테이너를 –volumes-from옵션으로 걸면 기존에 있던 컨테이너가 호스트에 공유하고 있는 디렉터리로 동기화가 된다.
- 따라서 여기선 volume_override 컨테이너가 볼륨 컨테이너가 된 것이다.
- 말그대로 볼륨 용도의 컨테이너를 만드는 방식이다.
- 도커 볼륨
- 도커 볼륨은 마찬가지로 생성된 컨테이너의 디렉터리 하나에 상응하는 단위로서 도커 엔진에서 관리한다.
- 도커 볼륨도 호스트 볼륨 공유와 마찬기지로 호스트에 저장함으로써 데이터를 보존하지만 실제로 어디에 저장하는지를 몰라도 된다는 장점이 있다.
# docker volume create --name myvolume # docker volume ls # docker run -i -t --name volume_test1 \ -v myvolume:/root/ \ ubuntu:14.04 root@5as6df465sadf:~# vi volume.txt # docker run -i -t --name volume_test2 \ -v myvolume:/root/ \
- 위와 같이 myvolume 도커 볼륨을 만들고 volume_test1컨테이너를 만들 때 공유를 시킨 후 해당 디렉터리에 파일을 임의로 만들면 새롭게 만든 volume_test2컨테이너에 공유 디렉터리에도 똑같이 그 임의의 파일이 들어있다.
docker inspect --type volume myvolume
명령어를 통해 해당 도커 볼륨이 호스트 어디에 저장되어있는지를 확인할 수 있다.
댓글남기기