Docker의 Container를 삭제하게 되면 컨테이너 내부 변경사항이 없어지게 됩니다. 예를들어 DB 컨테이너를 지우게 된다면 안에 있는 데이터가 사라지게 됩니다.
만약 파일을 보존하고 싶다면 Docker의 volume mount
를 이용해 데이터를 보존할 수 있는데, 이는 실제 저장공간을 사용할 수 있도록 하는 것 입니다.
그렇다면 Docker Volume는 무엇일까요?
Docker는 Volume을 생성하고 컨테이너가 이를 기존의 파일 시스템과 같이 사용할 수 있도록 해줍니다.
실제 디렉토리를 할당해주는 bind mount
와 달리 여러 장점이 있습니다.
tmpfs mount
의 경우는 임시 파일 시스템을 이용하는 방법입니다
--mount
와 --volume
(-v
)를 사용해 volume를 사용할 수 있습니다.
--mount
$ docker run --mount <key>=<value>,...
key | description |
---|---|
type | bind, volume, tmpfs 등이 들어가는 값이다. |
source, src | volume의 이름이 들어간다. 이름이 없는 볼륨의 경우는 생략한다. |
destination, dst, target | 컨테이너 내 어디에 mount될지 정하는 path가 들어간다. |
--volume
$ docker run -v <volume name>:<container path>:<option,...>
생성
$ docker volume create <name>
볼륨 리스트
$ docker volume ls
local <name>
삭제
$ docker volume rm <name>
run 명령을 실행할 때 다음과 같은 옵션을 통해 volume를 설정할 수 있습니다.
--mount source=<volume name>,target=<path>
$ docker run -d \
--name devtest \
--mount source=myvol2,target=/app \
nginx:latest
마지막으로 inspect
명령어를 활용해 컨테이너가 어떻게 마운트 되었는지 확인할 수 있습니다.
$ docker inspect <container>
compose 파일 내에서도 볼륨을 선언하고 할당해줄 수 있습니다.
todo-database:
# ...
volumes:
- database:/data/db
# ...
volumes:
database: