능글맞은 구렁이
Docker - Volumes 실습[ 익명 볼륨, 명명 볼륨 생성] 본문
1. 익명 볼륨 만들기
FROM node:20-alpine
WORKDIR /app
COPY package.json .
RUN npm install
COPY . .
EXPOSE 80
VOLUME ["/app/feedback"] # 볼륨 생성 코드
CMD ["npm", "start"]
- Dockerfile에 VOLUME ["/app/feedback"] 을 추가한다.
- docker build -t feedback-node:volumes . 이미지 빌드
- -t 이미지명:태크
- docker run -d -p 3000:80 --rm --name feedback-app feedback-node:volumes 컨테이너 실행
- -d : 백그라운드 실행
- -p 3000:80 : 포트 매핑 호스트머신포트(외부):컨테이너포트(내부)
- --rm : 컨테이너 종료 시 컨테이너 자동 삭제
- --name feedback-app : 컨테이너 명
- feedback-node:volumes : 이미지명:태크
- http://localhost:3000에 Title과 Document Text에 내용을 저장해서 save를 누른다.
- http://localhost:3000/feedback/awesome.txt 을 통해 데이터 확인
- docker stop feedback-app 컨테이너 중지
- docker run -d -p 3000:80 --rm --name feedback-app feedback-node:volumes 컨테이너 재 실행
- http://localhost:3000/feedback/awesome.txt 이동
- 데이터를 찾을 수 없음
2. 명명 볼륨 만들기
FROM node:20-alpine
WORKDIR /app
COPY package.json .
RUN npm install
COPY . .
EXPOSE 80
CMD ["npm", "start"]
- 이미지 빌드 (docker build -t feedback-node:volumes .)
- docker run -d -p 3000:80 --rm --name feedback-app -v feedback:/app/feedback feedback-node:volumes 실행
- -d : 백그라운드 실행
- -p 3000:80 : 포트 매핑 호스트머신포트(외부):컨테이너포트(내부)
- --rm : 컨테이너 종료 시 컨테이너 자동 삭제
- --name feedback-app : 컨테이너 명
- -v feedback:/app/feedback : 볼륨명:컨테이너경로
- feedback-node:volumes : 이미지명:태크
- http://localhost:3000에 Title과 Document Text에 내용을 저장해서 save를 누른다.
- http://localhost:3000/feedback/awesome.txt 통해 데이터 확인
- docker stop feedback-app 컨테이너 중지
- docker run -d -p 3000:80 --rm --name feedback-app -v feedback:/app/feedback feedback-node:volumes 재실행
- 이번에는 바로 http://localhost:3000/feedback/awesome.txt 이동하여 데이터 확인
- 데이터 유지됨
- docker volume ls로 살펴 본 결과 볼륨은 feedback 하나만 존재
- 이미 동일한 볼륨명이 있기 때문에 새로 생성되지 않고 기존 볼륨을 이용한것
정리하기
🤔 컨테이너를 stop하고 다시 run했을때 볼륨의 데이터는 유지가 될까?
- 정답은 NO !
- 그 이유는 ?
- --rm이라는 옵션 때문에 컨테이너가 종료될 때 컨테이너는 삭제 된다.
- 이때, 익명의 볼륨도 같이 삭제된다.
🤔 그렇다면 명명 볼륨도 컨테이너를 삭제하면 데이터도 삭제될까?
- 정답은 NO!
- 그 이유는?
- 명명 볼륨은 컨테이너의 '부속품'이 아니라 독립적인 Docker 리소스이기 때문에 자동 삭제되지 않는다.
'DevOps > Docker' 카테고리의 다른 글
| Docker - Volume [ENV(환경변수), ARG(빌드 인수)] (0) | 2026.03.01 |
|---|---|
| Docker - Volumes 실습[바운드 마운트 생성] (0) | 2026.03.01 |
| Docker - Volumes이란? (0) | 2026.01.18 |
| Docker - Docker Hub(image push&pull) (1) | 2024.02.06 |
| Docker - 이미지, 컨테이너 삭제 (0) | 2024.01.16 |
Comments