Docker & Containerization
애플리케이션과 모든 의존성을 격리된 컨테이너로 패키징하여 "내 로컬에서는 됐는데" 문제를 제거하는 기술.
sys.entry
M
Me
hyunyoun's Blog
software-engineering-devops2 min read
Docker & Containerization
애플리케이션과 모든 의존성을 격리된 컨테이너로 패키징하여 "내 로컬에서는 됐는데" 문제를 제거하는 기술.
VM vs Container
핵심 개념
Image: 읽기 전용 레이어 스택. FROM ubuntu:22.04부터 레이어 누적.
Container: 실행 중인 Image 인스턴스. 최상위에 쓰기 가능 레이어 추가.
Layer Cache: 변경된 레이어부터만 재빌드 → Dockerfile 명령어 순서가 빌드 속도에 직결.
Dockerfile 최적화
CODE
# 의존성을 소스보다 먼저 복사 → 소스 변경 시 의존성 캐시 재사용
COPY package.json .
RUN npm ci
COPY src/ ./src/Multi-stage Build: 빌드 도구를 최종 이미지에서 제거 → 이미지 크기 최소화:
CODE
FROM node:24 AS builder
RUN npm run build
FROM node:24-alpine
COPY --from=builder /app/dist ./dist연결 노트
- ZK-CI-CD-Pipeline — 컨테이너 이미지 빌드·푸시가 CI 파이프라인의 핵심 단계
- ZK-Microservices-Decomposition — 각 서비스를 독립 컨테이너로 패키징
- ZK-Zero-Trust-Security — 컨테이너 레지스트리 접근 제어, 이미지 취약점 스캔
- ZK-Big-O-Complexity — 레이어 캐시 활용으로 빌드 시간을 O(변경 레이어)로 단축