Slim 및 Distroless 기반으로 이미지 크기 줄이기
최소한의 기반 이미지 선택, 빌드 도구 제거, distroless 또는 scratch 기반 사용으로 최종 이미지와 다운로드 시간을 줄이고 공격 표면을 축소하는 방법을 배워 보세요.
Slim 및 Distroless 기반으로 이미지 크기 줄이기은(는) CoddyKit의 무료 Docker & DevOps Fundamentals 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Docker & DevOps Fundamentals 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Docker & DevOps Fundamentals 강의에는 총 4개의 강의가 포함되어 있습니다.
이미지 크기가 중요한 이유
작은 이미지는 더 빠르게 가져오고 더 빨리 시작하며 저장 비용이 적게 들고 공격자에게 노출되는 패키지도 줄어듭니다. 크기 최적화는 성능과 보안을 모두 향상합니다.
가벼운 기반 이미지 선택하기
기본 이미지는 편리하지만 무겁습니다. node:20(약 1GB)를 node:20-slim 또는 node:20-alpine으로 바꾸면 즉시 수백 MB를 줄일 수 있습니다.
FROM node:20-slimAlpine의 장단점
Alpine은 매우 작지만 glibc 대신 musl libc를 사용하므로 네이티브 바이너리가 간혹 작동하지 않을 수 있습니다. 주의 깊게 테스트하세요. 때로는 -slim이 더 안전한 소형 옵션입니다.
FROM python:3.12-alpineRUN 레이어 결합하기
각 RUN은 레이어를 추가합니다. 관련 명령을 연결하고 같은 레이어에서 정리하세요. 그렇지 않으면 삭제한 파일이 이전 레이어의 용량을 계속 차지합니다.
RUN apt-get update \
&& apt-get install -y curl \
&& rm -rf /var/lib/apt/lists/*.dockerignore 사용하기
.dockerignore 파일은 node_modules, .git, 로그와 같은 불필요한 항목이 빌드 컨텍스트에 포함되지 않게 합니다. 컨텍스트가 작아지면 빌드가 빨라지고 레이어도 작아집니다.
# .dockerignore
.git
node_modules
*.log다중 스테이지 복습
모든 컴파일러가 포함된 한 스테이지에서 빌드한 다음, COPY --from으로 결과물만 깨끗한 최종 스테이지에 복사합니다. 도구 모음은 최종 이미지에 포함되지 않습니다.
FROM golang:1.22 AS build
WORKDIR /src
COPY . .
RUN go build -o app
FROM alpine:3.20
COPY --from=build /src/app /appDistroless 알아보기
배포판 없는 이미지는 애플리케이션과 실행 환경만 포함하며 셸, 패키지 관리자, 추가 바이너리는 포함하지 않습니다. 매우 작고 악용하기도 어렵습니다.
FROM gcr.io/distroless/static-debian12
COPY --from=build /src/app /app
ENTRYPOINT ["/app"]셸이 없어도 문제없습니다
배포판 없는 이미지에는 셸이 없으므로 RUN 명령과 docker exec sh가 작동하지 않습니다. 모든 설정은 이전 스테이지에서 수행하고, 내부를 확인해야 할 때는 :debug 태그를 사용하세요.
scratch 기반 이미지
완전히 정적으로 빌드된 바이너리(Go, Rust)의 경우 FROM scratch는 실행 파일 외에는 아무것도 포함하지 않으며, 전체 크기가 몇 MB에 불과한 경우가 많습니다.
FROM scratch
COPY --from=build /src/app /app
ENTRYPOINT ["/app"]성과 측정하기
docker images로 크기를 비교하고 docker history로 어떤 레이어가 가장 큰지 확인하세요. 가장 용량이 큰 레이어부터 최적화하는 것이 좋습니다.
docker history myapp:latestlatest가 아닌 버전 고정하기
특정 태그나 다이제스트를 고정하면 빌드를 재현할 수 있고, 업스트림의 latest가 변경될 때 크기가 갑자기 커지는 일을 피할 수 있습니다.
FROM node:20.11.1-slim빠른 확인
배포판 없는 이미지의 특징은 무엇인가요?
복습
이제 이미지 크기를 적극적으로 줄일 수 있습니다.
-slim,-alpine, 배포판 없는 이미지 또는scratch기반 이미지를 선택합니다RUN레이어를 연결하고 정리하며.dockerignore를 사용합니다- 다중 스테이지 빌드로 도구 모음을 제거합니다
docker history로 측정하고 버전을 고정합니다
이미지가 작아지면 배포가 더 빠르고 안전해집니다.
자주 묻는 질문
“Slim 및 Distroless 기반으로 이미지 크기 줄이기” 강의는 무료인가요?
네 — “Slim 및 Distroless 기반으로 이미지 크기 줄이기” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Docker & DevOps Fundamentals 강의 전체를 잠금 해제할 수 있습니다. Docker & DevOps Fundamentals 강의에는 총 4개의 강의가 포함되어 있습니다.
“Slim 및 Distroless 기반으로 이미지 크기 줄이기”에서 뭘 배우나요?
최소한의 기반 이미지 선택, 빌드 도구 제거, distroless 또는 scratch 기반 사용으로 최종 이미지와 다운로드 시간을 줄이고 공격 표면을 축소하는 방법을 배워 보세요. 브라우저에서 직접 실행하는 실습 코드로 Docker & DevOps Fundamentals을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Docker & DevOps Fundamentals을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Docker & DevOps Fundamentals은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.
“Slim 및 Distroless 기반으로 이미지 크기 줄이기” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Docker & DevOps Fundamentals 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Docker & DevOps Fundamentals 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 효율적인 다단계 빌드
- 빌드 캐시 활용
- Dockerfile 보안 모범 사례
- Slim 및 Distroless 기반으로 이미지 크기 줄이기