9.docker stoarge=
Docker storage driver
-
layered architecture
- 각 layer에서는 이전 layer의 변경 사항만을 저장함
- 이를 통해 동일한 layer는 다시 생성하지 않고 1번을 가져와 진행
- image를 빨리 생성, 디스크 공간 절약
- contianer에 의해 생성된 data는 layer 6에 저장
- container가 작동 중일 때만 write 가능하며 container 삭제시 같이 삭제됨
- image layer의 파일은 이미 build 되었기 때문에 변경 불가능, 읽기 전용
- COPY-ON-WRITE을 통해 image layer 내부 file을 contianer layer에 저장하여 수정함
- volume
- container에서 생성된 data를 보존하기 위한 방법
- /var/lib/docker/volumes : 내장된 volumes directory (volume mounting)
docker volume create <data_volume>
- /var/lib/docker/volumes 생성
docker run -v <data_volume>:/var/lib/<myubuntu> <ubuntu>
- 이 때
은 /var/lib/docker/volumes directory 안에 있는 directory 여야한다. - create 안써도 -v 사용하면 자동으로 directory 생성해줌
- 외장 storage 이용 (bind mounting)
docker run -v <외장 storage path>:/var/lib/<myubuntu> <ubuntu>
- 요즘엔
-v
안쓰고--mount
사용docker run --mount type=bind, source=/data/mysql, target=/var/lib/mysql mysql
- type : volume or bind
- source : host의 위치
- target : container의 위치
- storage driver
- storage driver를 통해 layered architecture를 구현하고 이를 통해 storage도 관리
- layer 생성, layer에 관련된 file을 유지
- AUFS, ZFS, BTRF…
실습
- docker 설치 시 자동으로 설치되는 파일 확인
sudo ls -l /var/lib/docker
- /var/lib/docker/containers 안에 container ID에 해당하는 폴더 존재
- docker storage 및 docker 정보 확인
docker info | more
- image 설치 과정 확인
docker histroy <image>
- image의 disk 차지 용량, 공유 용량(같은 layer) 확인
docker system df -v