0Pricing
Docker & DevOps Fundamentals · 강의

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-slim

Alpine의 장단점

Alpine은 매우 작지만 glibc 대신 musl libc를 사용하므로 네이티브 바이너리가 간혹 작동하지 않을 수 있습니다. 주의 깊게 테스트하세요. 때로는 -slim이 더 안전한 소형 옵션입니다.

FROM python:3.12-alpine

RUN 레이어 결합하기

각 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 /app

Distroless 알아보기

배포판 없는 이미지는 애플리케이션과 실행 환경만 포함하며 셸, 패키지 관리자, 추가 바이너리는 포함하지 않습니다. 매우 작고 악용하기도 어렵습니다.

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:latest

latest가 아닌 버전 고정하기

특정 태그나 다이제스트를 고정하면 빌드를 재현할 수 있고, 업스트림의 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 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 효율적인 다단계 빌드
  2. 빌드 캐시 활용
  3. Dockerfile 보안 모범 사례
  4. Slim 및 Distroless 기반으로 이미지 크기 줄이기
← Docker & DevOps Fundamentals(으)로 돌아가기