Page 26 -
P. 26
FROM에서는 기반이 되는 도커 이미지를 지정한다. 도커 파일의 기본적인 흐름은 FROM으로 지정한
기반 이미지에 RUN이나 COPY 등의 명령을 사용해 패키지 설치나 파일 복사 등의 여러 가지 처리를
하여 이미지를 생성하는 것이다.
기반 이미지로 사용할 수 있는 대표적인 이미지는 표 1-1과 같다. 알파인 리눅스는 musl libc와
busybox를 기반으로 한 경량 리눅스로, 도커 허브(Docker Hub)에 공개된 많은 컨테이너 이미
지에서도 사용되고 있다. 그러나 musl libc는 glibc와 약간의 동작 차이가 있는 등 기존 배포판
과 다르므로 주의해야 한다. 그 외에 파이썬(Python)이나 Node.js 등 특정 애플리케이션 런타임
1
만 포함된 Distroless 이미지 등도 좋은 대안이다. 또 초경량의 대표적인 기반 이미지로 scratch
이미지가 있지만, 셸도 설치되어 있지 않아 디버그가 어렵다는 단점이 있다. 기술 지원이 필요
한 경우에는 특정 환경의 기반 이미지로 레드햇(RedHat)이 지원하는 Red Hat Universal Base
Image(UBI)도 추천한다.
표 1-1 도커 이미지와 이미지 사이즈
이미지명 이미지 사이즈
scratch 최소
alpine 작다
distroless 작다
ubuntu 크다
centos 크다
Universal Base Image 크다
실제로 도커 이미지를 다운로드해 사이즈를 확인해보자. scratch 이미지는 이미지 안에 아무것도
설치되어 있지 않기 때문에 컨테이너가 생성되지 않으며, 도커에서 제공하는 사전에 정의된 이미
지라고 보면 된다.
# 도커 이미지 다운로드
IMAGES=(
alpine:3.11
gcr.io/distroless/static gcr.io/distroless/base
gcr.io/distroless/java gcr.io/distroless/python3 gcr.io/distroless/nodejs
ubuntu:18.04 ubuntu:20.04
centos:7 centos:8
1 https://github.com/GoogleContainerTools/distroless
34
쿠버네티스_04.indd 34 2021-07-20 오후 1:32:57