[Docker] Docker Volume

2024. 11. 15. 10:40·Minding's Programming/Knowledge
728x90
반응형

Docker Volume?

Docker Container가 실행되었다가 중단된다면, 그 안에 있는 데이터들은 일반적으로 유실된다. 하지만 Container에서 DB같은 프로그램이 동작하는거라면, 그 데이터가 유실되면 안될 것이다.

 

그 데이터를 보장하는 기능이 Docker Volume이라고 할 수 있다. Docker Volume은 Docker Container의 가상 파일 시스템과 호스트 시스템(OS)의 파일 시스템을 맵핑해 기록을 남기는 방식으로 데이터를 저장한다.

 

위와 같은 방식으로 Container의 특정 폴더 경로를 OS 시스템의 포더 경로와 마운트해 해당 폴더를 공유하는 것이다.

 

Docker Volume 타입

  • Host Volumes: docker run -v를 실행할 때 페어로 지정
    • docker run -v /home/minding/logs:/var/lib/airflow/logs
  • Anonymous Volumes: docker run -v를 실행할 때 컨테이너 패스만 지정
    • docker run -v /var/lib/mysql/data
    • Dockerfile에서 사용되는 방식으로, 호스트 시스템에 저장되지는 않지만 재시작해도 유지됨
  • Named Volumes: docker run -v를 실행할 때 이름과 컨테이너 패스를 지정
    • docker run -v name:/var/lib/mysql/data
    • 이 방식이 하나의 Volume을 다수의 컨테이너에서 공유하는 것도 가능하게 해줌
    • docker compose에서도 사용되는 방식

 

이미지 생성시 Docker Volume 사용법

  1. Dockerfile
    • VOLUME 명령을 통해 anonymous volume만 지정 가능
  2. docker compose
    • Host volume이나 Named Volume을 사용하는 것이 일반적

 

Docker-compose.yaml 파일 예시(Airflow)

Docker를 통해 airflow를 설치했을 경우 docker-compose.yaml 파일에는 아래와 같이 volume이 지정되어 있다.

  ...
  volumes:
    - ${AIRFLOW_PROJ_DIR:-.}/airflow/dags:/opt/airflow/dags
    - ${AIRFLOW_PROJ_DIR:-.}/logs:/opt/airflow/logs
    - ${AIRFLOW_PROJ_DIR:-.}/config:/opt/airflow/config
    - ${AIRFLOW_PROJ_DIR:-.}/airflow/plugins:/opt/airflow/plugins
    - ${AIRFLOW_PROJ_DIR:-.}/airflow/files:/opt/airflow/files
  ...

나의 경우 minding 폴더 아래에 airflow 폴더가 위치해 있기 때문에, 'minding/airflow/dags'가 airflow의 '/opt/airflow/dags'와 마운트되어 있는 것이다.

 

Docker Volume 명령어

  • docker volume ls: docker volume 리스트 출력
  • docker volume rm: 특정 volume 삭제
  • docker volume prune: 사용되지 않는 모든 volume 삭제
  • docker volume inspect: 특정 volume의 상세정보 출력

 

 

728x90

'Minding's Programming > Knowledge' 카테고리의 다른 글

[Kafka/Python] Kafka 설치 방법(Conduktor)  (1) 2024.12.05
[Python/Unittest] Unittest  (0) 2024.12.02
[CI/CD] CI, CD 개념 및 Github Actions  (1) 2024.11.14
[BI/시각화] Superset  (1) 2024.10.31
[Snowflake] Snowflake 알아보기 (설치 방법)  (0) 2024.10.31
'Minding's Programming/Knowledge' 카테고리의 다른 글
  • [Kafka/Python] Kafka 설치 방법(Conduktor)
  • [Python/Unittest] Unittest
  • [CI/CD] CI, CD 개념 및 Github Actions
  • [BI/시각화] Superset
Minding
Minding
  • Minding
    Today's Minding
    Minding
  • 전체
    오늘
    어제
    • 울고넘는 딥러닝 (278)
      • Minding's Baseball (57)
        • MLB Statcast (29)
        • 머신러닝으로 홈런왕 예측하기 (3)
        • 야구칼럼 (12)
        • 야구 규칙, 용어 (1)
        • 2022-23 질롱 코리아 (8)
        • 류현진 등판경기 (4)
      • Minding's Programming (185)
        • 프로그래머스 코딩테스트 (21)
        • Knowledge (44)
        • Numpy & Pandas (6)
        • Excel (3)
        • Git (1)
        • Pygame (11)
        • CV (3)
        • Tensorflow tutorial (4)
        • Kaggle and Dacon (4)
        • 에러 코드 (8)
        • FastAPI (8)
        • Airflow (29)
        • Crawling (6)
        • Django (14)
        • AWS (18)
        • Spark (5)
      • Minding's Reading (30)
        • 머신러닝 딥러닝에 필요한 기초 수학 with 파이.. (2)
        • 칼만필터는 어렵지 않아 (11)
        • 밑바닥부터 시작하는 딥러닝 (6)
        • 메이저리그 야구 통계학 2e (8)
        • 논문읽기 (2)
        • 빅데이터를 지탱하는 기술 (1)
      • Minding's Life (5)
        • 주식 (4)
        • 각종 소식 (1)
  • 블로그 메뉴

    • 홈
    • Baseball
    • Programming
    • Reading
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    프로그래머스
    야구
    파이게임
    FastAPI
    머신러닝
    pygame
    넘파이
    파이썬
    MLB
    게임개발
    칼만필터는어렵지않아파이썬
    칼만필터는어렵지않아
    칼만필터
    AWS
    코딩테스트
    Airflow
    질롱코리아
    데이터분석
    KBO
    칼만필터는어렵지않아python
    데이터 엔지니어
    딥러닝
    KalmanFilter
    파이썬게임개발
    에어플로우
    mlb stats api
    django
    Python
    메이저리그
    django python
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Minding
[Docker] Docker Volume
상단으로

티스토리툴바