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