7-1. Docker Container Storage

2024. 5. 1. 12:13·쿠버네티스/docker
  1. 컨테이너 볼륨
    1. 컨테이너 이미지는 read only (수정 X)
    2. 컨테이너에 추가되는 데이터들은 별도의 RW 레이어에 저장
      • 컨테이너 이미지를 실행하여 하나의 프로세스 상태가 되어도 여전히 read only 상태.
      • 단, read/write 레이어가 만들어진 뒤 연결되고, 모든 데이터가 rw 레이어에 쌓임.
      • 유니온 파일 시스템 : readonly 레이어에 readwrite 변경사항이 하나인것처럼 보여짐 (=overlay)
      • docker rm 명령어로 컨테이너 삭제 시, ro 와 rw 데이터는 모두 삭제됨 (복원 X)
      • 위 케이스를 방지하기ㅏ 위해 컨테이너 볼륨, 데이터 보존 기술이 중요함.
  2. 데이터 보존 방법
    1. 컨테이너가 만들어주는 데이터 영구적 보존
      • mysql 컨테이너라는 가정 하에, /var/lib/mysql 안에 수많은 rw 데이터들이 쌓임 (read/write layer)
      • 이 상황에서 영구적으로 보존하기 위해서는 Docker Host 에 특정 저장소 공간을 만들어야 함.
      • 컨테이너가 만들어주는 데이터를 해당 특정 저장소 공간에 저장함 (/dbdata)
    2.  컨테이너 데이터 보존 방법.
      • docker run -d --name db
      • -v dbdate:/var/lib/mysql
        • -v(옵션) 호스트의 디렉토리 : 컨테이너 디렉토리
          > 컨테이너에서 만들어진 데이터를 실제 호스트 디렉토리 안에 쌓이게됨
        • 이것을 volume mount 라고 말함.
      • -e MYSQL_ALLOW_EMPTY_PASSWORD=pass
      • mysql:latest
    3. volume 옵션 사용(-v)
      • -v <host path>:<container mount path>
        docker run -d -v /dbdata:/var/lib/mysql -e MYSQL..PASSWORD=pass mysql:latest
        • /var/lib/mysql 의 내용을 실제 호스트 /dbdata 에 기록되도록 만듬
      • -v <host path>:<container mount path>:<read write mode>
        docker run -d -v /webdata:/var/www/html:ro httpd:latest
        • ro : read only, host에 있는 data를 수정하지 못하게 함.
        • ro 생략 시, read, write 모두 가능.
      • -v <container mount path>
        docker run -d -v /var/lib/mysql -e MYSQL..PASSWORD=pass mysql:latest
        • host path 가 생력된 경우, UUID 하단 data directory를 만들어 알아사 자동 마운트함.
  3. 컨테이너간의 데이터 공유
    1. 컨테이너끼리 데이터 공유하기
      • docker run -v /webdata:/webdata -d --name df smlinux/df:latest
      • docker run -d -v /webdata:/usr/share/nginx/html:ro ubuntu:latest
        • web content generator 에 쌓이는 데이터를 Docker Host 의 /webdata 에 저장
        • web server 컨테이너가 데이터를 사용해 웹페이지를 그려내고 사용자는 webserver 컨테이너에 접근하여 웹 페이지 이용
        • 볼륨마운트를 통해 컨테이너 간의 데이터 공유가 가능함.

'쿠버네티스 > docker' 카테고리의 다른 글

8-1. 컨테이너간 통신(네트워크)  (1) 2024.05.03
7-2.Docker Container Storage  (0) 2024.05.03
6-2. 컨테이너 리소스 관리하기.  (0) 2024.04.30
6-1. 컨테이너 관리(하드웨어 리스소 제한 및 컨테이너 모니터링)  (1) 2024.04.30
5-2. Docker 컨테이너 사용하기  (0) 2024.04.30
'쿠버네티스/docker' 카테고리의 다른 글
  • 8-1. 컨테이너간 통신(네트워크)
  • 7-2.Docker Container Storage
  • 6-2. 컨테이너 리소스 관리하기.
  • 6-1. 컨테이너 관리(하드웨어 리스소 제한 및 컨테이너 모니터링)
몽자비루
몽자비루
코딩공부 정리용 블로그입니다.
  • 몽자비루
    공부하는 블로그
    몽자비루
  • 전체
    오늘
    어제
    • 분류 전체보기 (176) N
      • python (30)
        • python_selenium (16)
        • python_pygame (3)
      • appium (0)
      • 쿠버네티스 (60)
        • linux (8)
        • shell programming (8)
        • docker (18)
        • cka (23)
      • postman&API (16)
      • QA성장하기 (32)
        • 개발자에서 아키텍트로 스터디 (6)
        • 소프트웨어 공학 이해도 높이기 (6)
        • 테스팅 전문 지식 쌓기 (18)
        • 제4회 QA conference (2)
      • 에러일기 (1)
      • Server&load (35)
        • AWS (27)
        • load test (5)
        • CI CD (3)
        • Jmeter (0)
      • RAG 을 활용하여 LLM 만들어보기 (1) N
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    QAKOREA
    cka
    앱공존성
    API
    공존성테스트
    로스트아크
    스터디
    개발자에서아키텍트로
    테스트스크립트
    리눅스
    vi에디터
    application log
    linux
    테스트 결과보고서
    LOSTARK
    k8s
    qa 컨퍼런스
    애플리케이션로그
    postman
    로스트아크api
    네트워크 테스트
    python
    .cpu
    쿠버네티스
    qa conference
    qa
    사드웨어리소스
    e2c
    도커
    포스트맨
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
몽자비루
7-1. Docker Container Storage
상단으로

티스토리툴바