Dockerfile을 빌드하여 Docker 이미지를 작성하면 Dockerfile의 명령별로 이미지를 작성합니다.
작성된 여러 개의 이미지는 레이어 구조로 되어 있습니다.
다음은 4개의 명령으로 구성된 Dockerfile입니다.
# Step 1 : Ubuntu (베이스 이미지)
FROM ubuntu:latest
# Step 2 : Nginx 설치
RUN apt-get update && apt-get install -y -q nginx
# STEP 3 : 파일 복사
COPY index.html /usr/share/nginx/html
# STEP 4: Nginx 시작
CMD ["nginx", "-g", "daemon off;"]
Dockerfile과 같은 디렉토리에 index.html를 임의로 구성하고 docker build를 통하여 이미지를 작성합니다.
docker build -t webap:1.0 .
실행 결과
Sending build context to Docker daemon 3.072kB
Step 1/4 : FROM ubuntu:latest
---> 7e0aa2d69a15
Step 2/4 : RUN apt-get update && apt-get install -y -q nginx
---> Running in d553b2e80394
~~중략~~
Removing intermediate container d553b2e80394
---> f5abca047313
Step 3/4 : COPY index.html /usr/share/nginx/html
---> 55ec8ca97c95
Step 4/4 : CMD ["nginx", "-g", "daemon off;"]
---> Running in 458dcf5d10de
Removing intermediate container 458dcf5d10de
---> 3a649f4fdb4e
Successfully built 3a649f4fdb4e
Successfully tagged webap:1.0
로그를 확인하면 Dockerfile 명령어 한 줄 마다 이미지(Layer)가 작성되는 것을 알 수 있습니다. (step 1/4~4/4)
또한 중간중간에 컨테이너가 생성되었다가, 삭제되는 것을 확인할 수 있는데, 이는 Docker에서 이미지 레이어를 생성할 때 컨테이너를 임시로 생성하였다가, 명령어를 실행한 뒤 해당 컨테이너를 통하여 이미지를 작성하고, 컨테이너를 삭제하는 것을 알 수 있습니다.
Docker의 컨테이너는 Union File System을 기반으로 동작하기 때문에 복수의 레이어로 구성되어 있으며, 작성한 이미지 레이어는 다른 이미지와도 공유됩니다.
UnionFS - Wikipedia
Unionfs is a filesystem service for Linux, FreeBSD and NetBSD which implements a union mount for other file systems. It allows files and directories of separate file systems, known as branches, to be transparently overlaid, forming a single coherent file s
en.wikipedia.org
따라서 공통의 베이스 이미지를 바탕으로 여러개의 이미지를 작성한 경우 베이스 레이어의 이미지가 공유됩니다. 이와 같이 이미지를 겹침으로써 Docker에서는 디스크의 용량을 효율적으로 이용합니다.
Docker 이미지 레이어의 구조에 대하여 알아보았습니다.
'About > Docker' 카테고리의 다른 글
[Docker] Multi-stage build를 이용한 Nginx 웹 서버 이미지 만들기 (0) | 2021.05.03 |
---|---|
[Docker] Dockerfile - Multi-stage build(멀티스테이지 빌드) (0) | 2021.05.03 |
[Docker] Dockerfile이란 (0) | 2021.05.02 |
[Docker] Container CPU 제한 (1) | 2021.04.26 |
[Docker] 실행 중인 컨테이너 한 번에 종료(삭제)하기 (0) | 2021.03.25 |