[Docker] Volume (데이터 보존할 때)

2024. 10. 21. 10:28·OS/Docker

 

volume 이란

도커에서 제공하는  volume 기술은 컨테이너 애플리케이션에서 생성되고 사용되는 데이터를 유지 및 보존하기 위해 사용한다. 컨테이너가 삭제되어도 Volume은 독립적으로 운영되기 때문에 데이터를 유지한다. 
 
도커  Volume 기술은 도커 호스트OS와 컨테이너에서 직접 접근이 가능하다. 
 
일반적으로 컨테이너 내부와 데이터는 컨테이너 생명 주기와 연관되어 컨테이너 종료 시 삭제되지만 이를 지속적으로 보존하기 위한 방법으로 Volume 기술이 사용된다. 
 
 
도커에는 3가지의 Volume 기술이 있다. 

 
# Bind Mount 

Bind mount 기법은 디렉토리 뿐만 아니라 파일도 mount 가능하다. 호스트 파일 시스템 절대경로 ":" 컨테이너 내부 경로"를 직접 mount하여 사용한다. 사전에 연결할 파일 또는 디렉토리를 사용자가 생성하면 해당 호스트 파일시스템의 소유자 권한으로 연결이 되고, 존재하지 않는 경루 자동 생성되지만 이 디렉토리 루트(root) 사용자가 소유가 된다. 
 
시전 정의 없이 컨테이너 실행 시 자동 생성되고, 컨테이너 제거 시 Bind Mount가 자동으로 해제되지만 생성된 호스트 디렉토리와 데이터는 보존된다. 

 ubuntu@docker:~$ docker run … -v /my-host:/app …
 ubuntu@docker:~$ docker run … —mount type=bind, source=${PWD}/my-data, target=/var/log

 

같은 공간이지만 이름이 다르다. 컨테이너에서 app 디렉토리를 넣으면 /my app에 들어간다. 만약 app 컨테이너를 지우면 my host에는 app의 데이터가 있기 때문에 문제 없다. 새롭게 생성하고 다시 mount를 시키면 아까 들어있던 내용 그대로 사용할 수 있다. 즉, 데이터를 host의 지정된 디렉토리에서 관리한다. 호스트 파일 시스템 절대 경로 :/컨테이너 내부 경로 를 직접 연결(mount) 하여 사용한다. 

 

 

#  Volume

도커 권장하는 방법으로 docker volume create  볼룸명으로 볼륨을 생성한다. Docker 볼륨은 Docker 명령어와 Docker API를 통해 사용할 수 있다. docker volume 명령은  Docker root dir(/var/lib/docker) 영역에 volume 영역을 만들어 컨테이너 내부 경로와 연결하고 공유하고, 볼륨 드라이버(vieux/sshfs plugin)를 통해 원격 호스트 및 클라우드 환경에 볼륨 내용을 저장하고 암호화가 가능하다. 

docker volume create <볼륨명>

ubuntu@docker:~$ docker volume create my-volume
ubuntu@docker:~$ docker run .... -v my-volume:/app ....
ubuntu@docker:~$ docker run .... --mount source=my-volume,target=/app ....

 

 

 

#  tmpfs mount

tmpfs 방식은 Docker HostOS의 Memory에서만 지속되고 해당 컨테이너가 중지되면 tmpfs mount 연결 해제와 함께 기록된 데이터도 사라진다. 이 방식에서는 컨테이너 간의 공유 설정이 되지 않고, Linux 기반 Docker에서만 지원된다. 주로 임시로 사용하고 기록되지 않아야 되는 파일, 데이터 등을 사용할 경우에 유용하다.

 

 ubuntu@docker:~$ docker run .... -tmpfs /var/www/html ....
 ubuntu@docker:~$ docker run --mount type=tmpfs,destination=/var/www/html

 

저작자표시 비영리 변경금지 (새창열림)

'OS > Docker' 카테고리의 다른 글

[Docker] Proxy vs Reverse Proxy 차이  (0) 2024.10.21
[Docker] Volume - Bind mount 실습  (0) 2024.10.21
[Docker] Nginx Container reverse proxy  (0) 2024.10.14
[Docker] - Nginx를 활용한 프록시 구성  (0) 2024.10.14
[Docker] - Container Proxy  (0) 2024.10.14
'OS/Docker' 카테고리의 다른 글
  • [Docker] Proxy vs Reverse Proxy 차이
  • [Docker] Volume - Bind mount 실습
  • [Docker] Nginx Container reverse proxy
  • [Docker] - Nginx를 활용한 프록시 구성
Kouji
Kouji
Journey to Becoming a Data & Server Engineer
  • Kouji
    Kouji's Data & Server Journey
    Kouji
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Programming
        • Python
        • SQL
      • Data & AI
        • Data Analysis
        • Ai
      • Cloud(AWS)
      • OS
        • Linux
        • Docker
        • Jenkins
        • Ubuntu
        • Window
        • Kubernates
        • Ansible
      • Network
        • NVIDIA
        • Network[이론]
        • Network[GNS3, Packet]
        • Network[On-Premise]
        • Network [L2, L3]
      • 트러블 슈팅
      • Life
        • My Career Stories
        • Personal
      • 개발 + OS 지식 함양
  • 블로그 메뉴

    • 홈
    • 관리 페이지
    • 글쓰기
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    네트워크
    인프라엔지니어
    리눅스
    Linux
    dns
    도커
    라우팅
    서버
    네트워크엔지니어링
    스위치
    AWS
    클라우드엔지니어
    오블완
    서버엔지니어
    인프라
    ubuntu
    보안
    CISCO
    티스토리챌린지
    네트워크엔지니어
    시스템엔지니어
    웹
    화이팅
    알고리즘
    IT
    OS
    L3
    VMware
    docker
    네트워크관리사
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Kouji
[Docker] Volume (데이터 보존할 때)
상단으로

티스토리툴바