
지금까지 도커를 이용하여 todo-list-app을 구현하였고, 생성된 컨테이너와 이미지를 중지 및 삭제 재빌드 하는 과정을 살펴보았다.
그렇다면 컨테이너가 삭제될 때, 컨테이너로 빌드된 어플리케이션의 데이터들은 어떻게 되는 걸까?
결론을 말하자면, 모든 데이터들은 삭제된다. 즉, 우리가 todo-app 에 작성한 todo 목록들은 컨테이너가 다운되는 순간 모두 삭제되는 것이다. (공식문서에서는 컨테이너에서 고립된다~ 라고 표현한다.)
때문에 저장 데이터를 유지하기 위해서는 볼륨을 사용해야 한다.
볼륨은 컨테이너의 특정 파일시스템 경로를 호스트 머신과 연결시켜주는 역할을 한다. 컨테이너의 디렉토리가 마운트 될 때, 변경사항 역시 호스트 머신에서 확인할 수 있다는 소리다.
거두절미 하고 일단 직접 해보자!
$ docker volume create todo-db
$ docker run -dp 3000:3000 -v todo-db:/etc/todos my-example
우선 todo-db 라는 볼륨을 하나 생성해주고, 컨테이너 구동 시 해당 볼륨을 사용하도록 설정해준다. 이 과정을 "볼륨을 컨테이너에 붙힌다" 라고 하는데, 보통은 "마운팅 한다" 라고 말한다.
$ docker volume ls
$ docker ps
볼륨과 컨테이너가 모두 정상 작동하는지를 확인하고..(만약 에러가 발생한다면, 이미 생성된 컨테이너가 있지는 않은지 확인해주자..) 해당 앱을통해 할일을 추가해보자.

정상적으로 todo 1, 2를 추가하였다. 그럼 이제, 실행중인 컨테이너를 중지시키고 삭제한 후, 다시 구동시켜보자! 변경사항이 모두 정상적으로 저장된 것을 확인할 수 있을 것이다!
$ docker volume inspect 볼륨이름
해당 명령어를 사용하면 볼륨에 대한 더 자세한 정보를 확인할 수 있다.
- 컨테이너의 작동이 중지되면 모든 변경사항은 삭제된다.
- 볼륨을 사용하면 컨테이너의 변경사항을 유지할 수 있다.
- 컨테이너와 볼륨을 연결해주는 것을 "마운팅"이라고 한다.