컨테이너를 사용하며 생성된 데이터는 컨테이너가 삭제되면 같이 삭제된다.
소스코드를 변경 후 다시 이미지를 빌드해서 컨테이너를 실행하는데 이전에 사용하던 데이터들이 없다면 어떻게 해야할까?
볼륨은 컨테이너나 이미지에 있는 것이 아니라 호스트에 있는 폴더이다.
즉 볼륨은 도커가 인식하는 호스트의 폴더이고, 컨테이너 내부의 폴더에 매핑된다.
도커 파일의 COPY 명령과 비슷하다고 생각할 수 있지만, COPY 명령은 파일과 폴더를 지정해 이미지에 복사하는 것이라 지속적으로 연결되거나 하지 않는 일회성이다.
볼륨은 컨테이너 외부에 있는 호스트의 폴더에 연결할 수 있다.
호스트 폴더에 파일을 추가하면 컨테이너 내부에서 엑세스가 가능하고, 컨테이너 내부에서 파일을 추가하면 호스트에서도 엑세스가 가능하다.
컨테이너를 삭제해도 볼륨은 삭제되지 않고, 볼륨의 데이터가 유지된다.
해서 볼륨을 사용해 데이터를 유지하는 것이 가능하다.
또한 컨테이너는 볼륨의 데이터를 읽고 쓰는 것이 가능하다.
VOLUME [ "/(작업폴더)/(내부경로 폴더)" ]
위와 같이 도커파일에 명령을 추가함으로 볼륨을 생성할 수 있다.
WORKDIR /app
.
.
.
VOLUME [ "/app/(내부경로 폴더)" ]
/app 폴더를 작업 폴더로 지정했다면 위와 같이 명령할 수 있다.
내부 경로 폴더는 소스코드를 확인해서 영구 데이터가 보관되는 폴더명을 작성한다.