Docker Storage

su-mmer·2022년 9월 21일
0

아묻따 도커 공부

목록 보기
11/18

Docker Storage

데이터 저장 방식, 컨테이너 파일 관리 방식
스토리지 드라이버가 파일 시스템의 모든 것을 관리

File System

  • 도커를 설치하면 /var/lib/docker 경로에 모든 데이터 저장
  • docker build 명령으로 한 번 구축이 완료된 이미지의 레이어는 내용을 수정할 수 없고 읽기 전용 상태가 되어 수정하려면 빌드를 새로 해야 한다.
  • docker run 명령으로 컨테이너를 생성하면 이미지 레이어 위에 Read/Write 레이어가 새로 생성된다. 이 레이어에 컨테이너에서 생성한 데이터가 저장되는 것.
  • R/W 레이어는 컨테이너가 활성 상태일 때만 사용할 수 있고 컨테이너가 사라지면 레이어도 사라진다.
  • 이 이미지로 생성한 컨테이너들은 모두 같은 레이어를 공유한다.
  • 파일을 수정하면 변경 사항이 R/W 레이어에 저장되고 이후 모든 변경 사항도 R/W 레이어에 저장된다. -> Copy-on-Write(COW)방식
  • COW방식에 의해 이미지는 계속 같은 상태로 유지될 수 있다.
  • 컨테이너에서 생성된 데이터들을 유지하고 싶으면 영구 볼륨을 연결하면 된다.

볼륨 마운팅 volume mounting

  • Docker에서 생성한 볼륨을 /var/lib/docker/volumes 디렉터리에 마운트하는 방식
  • docker volume create <data_volume> 명령을 하면 volumes 폴더 안에 data_volume 폴더가 생성된다.
  • docker run 할 때 컨테이너에 마운트 하기 위해 -v 옵션을 쓴다.
    docker run -v data_volume:/var/lib/mysql mysql volumeName:컨테이너 저장 지점 imageName

바인드 마운팅 bind mounting

  • Docker 호스트의 원하는 디렉터리를 마운트하는 것
    docker run -v <호스트 전체 경로>:<컨테이너 저장 경로> <image>

--mount

docker run \ --mount type=bind,source=/data/mysql,target=/var/lib/mysql mysql
type=방식, source=호스트 위치, target=컨테이너 위치

Docker Storage 실습

Docker에서 저장한 파일을 호스트에서 찾아보기


실행한 도커 이미지의 history를 보고 /var/lib/docker/overlay2 내부의 파일을 열어본다.

docker run hello-world 명령을 실행했을 때와 같은 파일이 실행되는 것을 볼 수 있다.

0개의 댓글