docker 도커 볼륨(Volumes) 사용하기 : NestJS사용 (Anonymous Volumes)
안녕하세요. 알렉스 입니다. 컨테이너 안에 파일이 독립적으로 생성되고 그것을 'docker cp'를 이용하여 Local로 옮길수가 있습니다. 하지만 컨테이너를 만들고 매번 'docker cp'를 이용하는 것은 무리가 있습니다.
그래서 도커 내의 폴더와 Local의 폴더가 실시간으로 동기화 되는 Volume이 필요한 것입니다. Volume과 연결된 컨테이너는 실시간으로 폴더를 업데이트하고 컨테이너를 삭제하기 전까지 Volume을 삭제할수 없습니다.
![]() |
사진1) 볼륨 구성 |
볼륨은 2개로 나눠지는데 직접 사용자가 관리하는 볼륨과 도커가 관리하는 볼륨으로 나눠집니다. 이번 글은 도커가 관리하는 볼륨중에서 이름이 지정되지 않는 볼륨을 만들것입니다.
gitHub Link : branch useVolume clone
해당 깃허브에서 'useVolume'브렌치로 클론해 주시기 바랍니다. 해당 레파지토리에 'Dockerfile'이 아래와 같이 작성되어 있습니다.
'VOLUME ["/userData"]'는 nestjs가 컨테이너로 실행이 될때 Volume으로 저장할 경로를 배열 형식으로 저장한 것입니다. 위 'Dockerfile'은 "/userData"를 Volume안에 저장한다는 의미 입니다.
![]() |
사진2) 이미지 생성 |
이제 'Dockerfile'을 기반으로 이미지를 생성하도록 하겠습니다. 이미지 생성법에 대해서는 링크를 참고해 주시기 바랍니다.
![]() |
사진3) 컨테이너 생성 |
해당 이미지(여기서는 'nestjs_volume_test1')를 이용하여 컨테이너를 생성합니다. 컨테이너 생성법은 해당 링크를 참고해 주시기 바랍니다.
이제 도커에 있는 볼륨을 확인하도록 하겠습니다.
$ docker volume ls
![]() |
사진4) 도커 볼륨 리스트 확인 |
사진4를 보면 해당 도커의 볼륨이 생성된 것을 알수 있습니다. Local에 '932f7......"라는 긴 이름으로 생성된 것을 알수 있습니다.
이는 도커 시스템에서 임의로 만든 볼륨 이름으로 해당 컨테이너에서 생성되는 데이터를 저장합니다. 하지만 이 볼륨같은 경오 해당 컨테이너가 삭제 되면 갖이 사라지게 되어 있습니다.
![]() |
사진5) 도커 컨테이너 삭제후 볼륨 리스트 |
이제 사진5에서 확인했든시 해당 도커는 Local에서 지워진 것으로 확인이 됬습니다. 따라서 설사 컨테이너가 지워졌어도 볼륨값을 지워지지않게 유기하고 싶다면 이름을 표기해야 합니다. 이는 다음 글에서 설명하도록 하겠습니다.
댓글
댓글 쓰기