docker image는 Layer로 구성 (Meta + Data)
메타 정보 확인
- docker inspect (이미지이름)
Docker Layer = image layer(read-only) + container layer(read/write)
container layer = 컨테이너가 작업하는 데이터 저장. 따라서 컨테이너 종료 시 conatiner layer 삭제됨
• 결과적으로 2종류의 Layer가 생성되고, 이 두 Layer를 합친 것이 바로 컨테이너의 File System
• 그래서 Container의 File System을 Union File System이라고 한다
• Docker Image Layer
: Docker Image Layer는 Dockerfile 명령어 갯수와 동일





image layer를 보여주는 docker inspect와 docker history는 보여지는 image layer 갯수가 다를 수 있다
(docker inspect에서는 image layer 크기가 0인 것은 보여주지 않음)
※ 먼저 생성된 Layer는 다음에 생성된 Layer의 부모(Parent)가 된다
• Build Cache
docker build를 실행할 때 사용되는 개념.
Build 중에 동일한 Image Layer가 있으면 기존 것을 재사용한다는 개념




여기서, 수정이 없는 Layer2 까지는 Cache를 사용하지만, 새롭게 입력된 명령어( echo SLEEPING ,,,)에 대해서는 새롭게 작업함을 알 수 있다.

따라서, Image Layer 수정이 빈번한 dockerfile명령어는 최대한 마지막에 쓰는 것이 중요
• 만약 제일 위에 빈번한 수정이 있는 Image Layer가 있다면, 수정할 때마다 대부분의 Image Layer를새롭게 생성하기 때문에, 그만큼 Build 속도가느리고 Image Layer 저장공간을 많이 차지하게 된다


• dangling 이미지 = 이름과 태그가 없는 image
dangling 이미지 종류
1. docker build 과정에서 중간에 생성되어 삭제된 docker image layer = "dangling build cache"
2. 기존 도커 이미지와 동일한 이름과 태그를 사용하여 docker build했을 때 = "dangling image"
dangling 이미지는 불필요하게 디스크 공간을 차지할 수 있으므로 관리자가 수동으로 삭제해야 한다!
*dangling build cache 삭제 명령어
- docker system prune -a (##모든 이미지 다 삭제됨. 조심조심)
*dangling image 몽땅 삭제 명령어
- docker images -f "dangling=true"
- docker rmi $(docker images -f "dangling=true" -q) 또는 docker image prune
'Study > Cloud' 카테고리의 다른 글
Kubernetes - Deployment & Service (0) | 2022.07.20 |
---|---|
Kubernetes 소개 및 설치 (0) | 2022.07.19 |
라우터 이해하기3 (0) | 2022.07.06 |
라우터 이해하기2 (0) | 2022.07.05 |
라우터 이해하기 (0) | 2022.07.04 |