Docker Image
- 도커 파일을 통해 도커 이미지를 생성하며, 이미지는 레이어 구조를 가지고 있다.
- 각 계층은 특정 명령에 의해 생성된다.
Dockerfile
- 도커 이미지를 생성하기 위한 설정 파일
- FROM, RUN 등 명령어들이 포함되어 있다.
- 각 명령은 레이어를 생성하며 이미지 빌드에 포함된다.
Base Image
- 가장 밑에 있는 이미지 계층
- 주로 운영체제나 런타임 환경(Debian, Ubuntu, nginx 등)이 포함
- 모든 도커 이미지는 베이스 이미지를 기반으로 만들어진다.
Layer
- 각 레이어는 도커 파일에서 사용자가 작성한 명령어(RUN, COPY 등)에 따라 생성한다.
FROM ubuntu
RUN apt-get update && apt-get install -y httpd
COPY ./app /app
- 예시로 위와 같은 도커 파일이 있을 때,
- FROM 명령은 Base Image
- RUN 명령은 Layer A
- COPY 명령은 Layer B
- 모든 레이어는 읽기 전용이며, 각 레이어는 상위 레이어에 의존한다.
Update Frequency
- 상위 레이어일수록 자주 업데이트 된다.
- 그림을 가지고 예를 들자면 Layer D는 애플리케이션 코드나 환경설정 관련 파일이 포함되어 업데이트가 잦을 수 있다.
- Base Image는 운영체제 관련 내용으로 상대적으로 자주 업데이트되지 않는다.
핵심 개념
- 레이어 재사용
- 도커는 기존 빌드된 레이어를 캐싱한다.
- 변경되지 않은 레이어는 재빌드하지 않아 빌드 속도가 빠르다.
- 이미지와 레이어의 관계
- 도커 이미지는 여러 레이어의 조합
- 각 레이어는 유니온 파일 시스템을 통해 하나의 통합된 이미지로 보여진다.
- 컨테이너 실행
- 도커 이미지는 읽기 전용
- 컨테이너가 실행되면 읽기/쓰기가 가능한 컨테이너 레이어가 추가된다.