[ 2022.11.26 TIL-Docker Container Storage ]

Coosla·2022년 11월 25일
0

TIL

목록 보기
21/29
post-thumbnail

Docker Container Storage

✏️ 컨테이너 볼륨

  • 컨테이너 이미지는 readonly(읽기만 가능)
  • 컨테이너에 추가되는 데이터들은 별도로 Read/Write 레이어에 저장
  • Union File System(Overlay)
    • 변경사항이 있는 Read/Write 레이어를 ReadOnly 레이어에 마치 하나인 것 같이 만들어서 보여주는 시스템
  • 컨테이너를 삭제하면 ReadOnly 레이어와 Read/Write 레이어 둘다 삭제되어 Read/Write 레이어에 있는 데이터도 같이 삭제

✏️ 데이터 보존 방법

  • 컨테이너가 만들어주는 데이터를 영구적 보관
  • Docker 호스트에 데이터를 저장할 저장공간을 생성
    • 컨테이너를 삭제해도 컨테이너 외부 도커 호스트의 저장공간에 데이터가 남아 있기 때문에 다시 해당 컨테이너를 적재하여 서비스를 운영할 때 도커 호스트 저장공간에 있는 데이터를 가져와 사용
    • docker run -d --name db
      -v [ Host Path:Container Mount Path | Host Path:Container Mount Path:Read Write Mode | Container MountPath ] ~
    • Host Path:Container Mount Path
      • Host Path를 Container Mount Path에 볼륨 마운트
      • Container Mount Path에 저장되는 데이터를 Host Path에도 같이 저장
      • 컨테이너가 도커 호스트 디렉토리를 수정하는 것은 보안 이슈가 발생할 수 있음
      • docker run -d -v /dbdata:/var/lib/mysql -e MYSQL..PASSWORD=pass mysql:latest
    • Host Path:Container Mount Path:Read Write Mode
      • Host Path:Container Mount Path와 동일
      • 읽기/쓰기 모드를 설정하여 데이터를 보호하면서 Host Path에 볼륨 마운트
      • 보통은 ReadOnly를 사용하여 Host Path에 저장된 데이터가 수정되는 것을 방지
      • docker run -d -v /webdata:/var/lib/html:ro httpd:latest
    • Container Mount Path
      • UUID 디렉토리 밑 데이터 디렉토리를 생성하여 데이터를 저장
      • 자동으로 마운트
      • docker run -d -v 컨테이너디렉토리 -e MYSQL...PASSWORD mysql:latest

✏️ 컨테이너끼리 데이터 공유

  • docker run -v 도커호스트디렉토리:컨테이너내부디렉토리 -d -name 컨테이너이름 컨테이너이미지
  • docker run -d -v 도커호스트디렉토리:컨테이너내부디렉토리 컨테이너이미지
  • 위와 같이 동일한 도커 호스트 디렉토리를 사용해 컨테이너끼리 데이터 공유 가능
  • 클라이언트가 외부와 연결된 컨테이너에 접속하여 다른 컨테이너의 데이터를 공유 가능

✏️ 실습

profile
프로그래밍 언어 공부 정리

0개의 댓글