도커 볼륨, 이걸 모르면 데이터 날아간다! 도커 초보 가이드
"도커 좋다해서 썼는데... 내 데이터가 싹 사라졌어요ㅠㅠ"
어제 밤새 만든 파일이, 컨테이너 docker rm
한 방에 증발하던 그날의 눈물…
그래서 알게 된 게 있죠. 도커 볼륨, 이 친구 없으면 큰일 난다는 걸요.
📦 데이터 보관소, 도커 볼륨이 뭐예요?
컨테이너는 아주 가볍고 빠르지만, 모르면 치명적인 사실이 하나 있어요.
휘발성! 네, 컨테이너를 제거하면, 기억상실증처럼 컨테이너 안의 모든 것도 깔끔하게 사라져버립니다.
그럼 데이터는 어디에 보관할까요?
바로! 도커 볼륨(Docker Volume) 이라는 멋진 창고가 있답니다.
"에이~ 그냥 USB 꽂듯 연결하면 되는 거 아냐?"
맞아요, 어느 정도는요. 그런데 이게 생각보다 꽤 스마트하게 작동해요.
🔍 도커 볼륨, 왜 써야 할까요?
현실에서 데이터를 매번 날려버릴 순 없잖아요?
- 우리가 운영하는 데이터베이스는?
- 로그 파일이나 업로드된 이미지는?
- 서버의 설정 파일은?
이런 것들은 컨테이너가 죽어도 살아남아야 해요.
그래서 도커는 외부 저장소인 볼륨이라는 구조를 제공해요.
쉽게 말해, 도커 컨테이너용 외장하드 같은 거죠.
컨테이너를 껐다 켜도, 포맷하지 않는 이상 데이터는 안전하게 보관됩니다. 든든하죠?
🧰 볼륨의 3가지 스타일
도커 볼륨도 성격이 다양해요. 마치 3종 세트처럼!
종류 | 특징 | 비유 |
---|---|---|
Volume | 도커가 직접 관리 | 도커 전용 창고 |
Bind Mount | 내 PC 폴더랑 직접 연결 | 공유 드라이브 |
tmpfs | 메모리에만 저장, 휘발성 | 휘발성 메모장 |
Volume
은 도커가 알아서 챙겨주는 자동화 창고,Bind Mount
는 내가 지정한 폴더를 강제로 연결!tmpfs
는 재부팅하면 휘익~ 사라지는 임시 저장소예요.
🪢 어떻게 연결할까?
docker run -v /내폴더:/컨테이너폴더 my-image
이렇게 쓰면,
내 컴퓨터의 폴더랑 컨테이너 안의 폴더가
마치 하나처럼 연결돼요.
내 PC의 /내폴더
에 저장하면,
그 내용이 컨테이너 안에서 /컨테이너폴더
에도 그대로 생깁니다! 오오~
그래서 격리된 컨테이너와 자료를 공유하는 아주 편리한 통로로 활용할 수 있어요.
컨테이너는 /컨테이너폴더
에 연결된 /내폴더
를 컨테이너 내부의 폴더로 인식하고 작업하기 때문이에요.
🧑🔧 도커 컴포즈로 쉽게 볼륨 관리하기
여러 개의 컨테이너를 띄울 땐 docker-compose.yml
파일이 최고예요.
services:
app:
image: ubuntu
volumes:
- ./my-data:/app/data
요렇게 하면 내 폴더 ./my-data
가 컨테이너 안의 /app/data
에 연결돼요.
또는, 여러 서비스가 같은 저장소를 공유할 수도 있어요!
services:
web:
image: nginx
volumes:
- shared-data:/app/data
worker:
image: ubuntu
volumes:
- shared-data:/app/data
volumes:
shared-data:
driver: local
driver_opts:
type: none
o: bind
device: ./shared-folder
하나의 작업 결과를 다른 컨테이너가 바로 읽을 수 있는 진정한 협업이죠!
🧼 깔끔한 볼륨 관리도 필요해요
docker volume ls # 볼륨 목록
docker volume inspect my-vol # 볼륨 정보 확인
docker volume rm my-vol # 삭제
docker volume prune # 안 쓰는 거 싹 정리
한 번씩은 청소도 해줘야겠죠?
안 그러면 어디서 왔는지도 모르는 볼륨들이 쌓여만 갑니다...😅
🧠 마무리 한 스푼
- 도커 볼륨은 데이터 보관의 생명줄!
- 휘발성 컨테이너를 든든하게 뒷받침해주는 도커의 핵심 기능이에요.
- 바인드 마운트냐, 볼륨이냐는 상황에 따라 골라쓰면 돼요.
- 도커 컴포즈로 관리하면 더욱 스마트하게 운영할 수 있고요!
이제 여러분도 도커 볼륨, 낯설지 않죠?
이제 도커 쓸 때마다, "데이터는 볼륨에~" 이 주문 외우셔야 해요! 😉