Docker volume, bind mount
[UMC 3기] Vibecap
기본적으로 docker container가 실행되는 동안 생성되는 파일은 container가 종료되면 삭제된다.
하지만 volume 또는 bind mount된 디렉토리에 생성된 파일은 영구적으로 저장된다.

Volume
Volume이란 docker가 관리하는 가상의 디렉토리이다.
volume 생성
$ docker volume create <volume-name>
volume 조회
$ docker volume ls
volume에 대한 상세 정보 출력
$ docker volume inpect <volume-name>
(MountPoint : volume과 연결된 container 경로)
생성한 volume을 mount
volume을 mount해야 해당 container가 volume에 접근할 수 있다.
container를 실행하는 docker run 명령의 -v 옵션을 사용한다.
$ docker run -v <volume-name>:/app --name <container-name>
똑같은 명령어로 다른 container에도 동일한 volume을 mount할 수 있다.
volume 삭제
container에 mount된 volume은 삭제할 수 없다.
$ docker rm -f <container-name>
$ docker volume rm <volume-name>
docker volume prune 명령어를 통해 mount되지 않은 모든 volume을 삭제할 수 있다.
bind
host의 특정 디렉토리를 바로 container에 mount한다.
volume과 다르게 docker가 관리하지 않기 때문에 ls, inspect, rm, prune 등의 명령어를 지원하지 않는다.
mount
docker run 명령어의 -v 옵션을 사용한다.
$ docker run -v /home/user/app:/app (이후 생략)
host의 /home/user/app를 container의 /app로 mount한다. (/app이 MountPoint이다.)
example
Vibecap에 적용
/home/ec2-user/vibecap/logs를 /app/logs에 mount
$ docker container run -v /home/ec2-user/vibecap/logs:/app/logs -d --name vibecap-server -p 8080:8080 mingeun2154/vibecap-server:0.0.0
로그 파일이 host의 지정한 경로에 저장되었다.

Comments