
Docker가 데이터를 저장하는 기본 위치:
/var/lib/docker/
주요 디렉토리:
containers/: 컨테이너 관련 파일image/: 이미지 관련 데이터volumes/: 생성된 볼륨 데이터overlay2/, aufs/, btrfs/: 저장 드라이버 별 디렉토리# 이미지 레이어
[ Ubuntu ] ⬆️
[ APT 패키지 설치 ] ⬆️
[ Python 설치 ] ⬆️
[ 코드 복사 ] ⬆️
[ ENTRYPOINT 지정 ]
# 컨테이너 실행 시
[ RW Layer ] ← 컨테이너에서 변경되는 파일 저장
이미지 레이어는 수정 불가
수정이 필요할 경우:
이 구조 덕분에 여러 컨테이너가 하나의 이미지 레이어를 공유할 수 있음
| 저장 위치 | 특성 |
|---|---|
| RW Layer | 컨테이너 삭제 시 사라짐 |
| Volume 또는 Bind Mount | 컨테이너 삭제 후에도 유지 |
/var/lib/docker/volumes# 볼륨 생성
docker volume create data_volume
# 컨테이너 실행 시 마운트
docker run -v data_volume:/var/lib/mysql mysql
docker run -v /data/mysql:/var/lib/mysql mysql
--mount 옵션 (권장 방식)docker run \
--mount type=bind,source=/data/mysql,target=/var/lib/mysql \
mysql
Storage Driver = Docker가 layered file system을 구현하는 방식
| 드라이버 | 특징 |
|---|---|
| AUFS | Ubuntu 기본, 빠르고 안정적 |
| overlay2 | 최신 커널에서 권장, 가장 널리 사용 |
| devicemapper | RHEL/CentOS 등에서 사용됨 |
| btrfs, zfs | 고급 기능 지원, 복잡함 |
Docker는 OS에 맞게 자동으로 가장 적합한 드라이버 선택함.
| 개념 | 설명 |
|---|---|
| 이미지 레이어 | 읽기 전용 (여러 컨테이너가 공유) |
| 컨테이너 레이어 | 쓰기 가능, 컨테이너 종료 시 삭제됨 |
| Copy-on-Write | 이미지 파일 수정 시 RW Layer에 복사 후 수정 |
| Volume Mount | /var/lib/docker/volumes 관리 |
| Bind Mount | 호스트의 임의 디렉토리 사용 |
| Storage Driver | 레이어 구조를 구현하는 핵심 기술 |
overlay2가 기본이라면 그대로 사용 (속도, 안정성 우수)