컨테이너 간 볼륨 공유는 이해하긴 쉬워도 모든 일을 해결해 주지는 못한다. 애플리케이션 컨테이너는 종종 자신만이 접근할 수 있는 파일을 필요로 한다. 이러한 파일을 다른 컨테이너가 동시에 접근하게 허용하면 애플리케이션이 비정상적으로 동작할 수도 있다. 볼륨은 컨테이너 간 파일 공유보다는 업데이트 간 상태를 보존하기 위한 용도로 사용해야 하며, 이미지에서 정의하는 것보다는 명시적으로 관리하는 편이 더 낫다. 볼륨에 이름을 붙여 생성하고 업데이트 시 다른 컨테이너로 옮겨 연결하면 된다.
실습 볼륨을 생성하고 버전 1의 to-do 애플리케이션에서 볼륨을 사용하라. 그다음 애플리케이션에서 UI를 통해 데이터를 추가하고, 애플리케이션을 버전 2로 업데이트해 보자. 운영체제에 따라 파일 경로가 달라지므로 환경 변수로 먼저 정의해 본문의 코드를 쉽게 붙여 넣을 수 있도록 했다.
# 복사 대상 경로를 환경 변수로 정의한다 target='/data' # 리눅스 컨테이너 $target='c:\data' # 윈도 컨테이너 # 데이터를 저장할 볼륨을 생성한다 docker volume create todo-list # 볼륨을 연결해 v1 애플리케이션을 실행한다 docker container run -d -p 8011:80 -v todo-list:$target --name todo-v1 diamol/ch06-todo-list # http://localhost:8011 페이지에서 애플리케이션에 데이터를 몇 건 추가한다 # v1 애플리케이션이 실행 중인 컨테이너를 삭제한다 docker container rm -f todo-v1 # 그다음에는 같은 볼륨을 사용하도록 v2 애플리케이션 컨테이너를 실행한다 docker container run -d -p 8011:80 -v todo-list:$target --name todo-v2 diamol/ch06-todo-list:v2