본문 바로가기

data engineering/docker

[Docker] Volume

[출처] 생활코딩 - Docker 입구 수업

 

 

1. 필요성

  • 컨테이너가 실행되었다가 중단되면, 데이터들은 어떻게 될까?
    • 모두 사라져버림...
    • 이때 사용할 수 있는게 Docker Volume

 

2. 정의

  • host 파일 시스템 폴더를 Docker container의 파일 시스템 폴더로 마운트하는 것
    • host에서 파일 내용을 바꾸면, 바로 Docker container에 반영됨
    • 반대도 가능하지만, Volume의 속성을 어떻게 두냐에 따라 다름
    • 이를 통해 Docker Container의 상태와 관계없이 데이터를 영구적으로 보관함
  • 파일 시스템에서의 마운트
    • 디스크와 같은 물리적인 장치를 파일 시스템의 특정 위치(폴더)에 연결해주는 것을 말함
    • (예시) 윈도우에서 USB를 꽂으면 내 컴퓨터에 새로운 :D or :E의 폴더가 생기는 것이 바로 마운트

 

3. 종류

  • Host Volumes
    • docker run -v 실행시 페어로 지정
    • docker run -v {host 파일 시스템 경로}:{Docker Container 파일 시스템 경로}
  • Anonymous Volumes
    • docker run -v {Docker Container 파일 시스템 경로}
    • Dockerfile에서 사용되는 방식으로, host 쪽에 액세스되지는 않지만 재시작시에도 유지됨
    • 매번 ID를 찾아서 관리해줘야해 자주 안쓰임
  • Named Volumes
    • docker run -v name:{Docker Container 파일 시스템 경로}
    • 가장 선호되는 방식으로, 하나의 Volume을 다수의 컨테이너에서 공유할 수 있음
    • docker compose에서도 사용됨

+) Volume을 readonly로 지정하고 싶다면? 뒤에 :ro를 붙이면 됨

 

 

4. 예시

  • nginx를 실행해보자
    • docker run -p 8081:80 -d --name nginx_demo -v /Users/jobox/Downloads/grepp/kdt/nginx/html:/usr/share/nginx/html nginx
    • 포트로 접속 - http://localhost:8081/
    • index.html 내용 수정하고, 브라우저에서 재방문
    • nginx 재시작하고 내용이 유지되는지 확인

 

 

 

 

 

[출처] 생활코딩, 데이터 엔지니어링 데브코스

'data engineering > docker' 카테고리의 다른 글

[Docker] network  (0) 2024.05.30
[Docker] Clean up  (0) 2024.05.30
[Docker] 명령어 사전  (0) 2024.05.29
[Docker] Docker & Github  (0) 2024.05.29
[Docker] Port forwarding(=Port mapping)  (0) 2024.05.29