Container발행일 2026. 8. 28.

Docker 이미지와 컨테이너 첫걸음

이미지 레이어와 컨테이너 실행 모델을 이해하고 작은 Node.js 이미지를 만듭니다.

#Docker#Container#Image

이미지와 컨테이너#

이미지는 실행 환경을 설명하는 불변 템플릿이고, 컨테이너는 그 이미지에서 생성된 격리된 프로세스입니다.

작은 이미지 만들기#

의존성 설치 단계와 소스 복사 단계를 분리하면 패키지 파일이 바뀌지 않았을 때 캐시를 재사용할 수 있습니다.

dockerfile 코드 예제
FROM node:22-alpine AS deps
WORKDIR /app
COPY package*.json ./
RUN npm ci --omit=dev

FROM node:22-alpine
WORKDIR /app
COPY --from=deps /app/node_modules ./node_modules
COPY . .
USER node
CMD ["node", "server.js"]

확인 명령#

bash 코드 예제
docker build -t dev-wiki .
docker run --rm -p 3000:3000 dev-wiki

흔한 실수#

  • 비밀값을 이미지에 COPY하지 않습니다.
  • .dockerignore로 node_modules, 로그, 로컬 환경 파일을 제외합니다.
  • 컨테이너 안에서 root 사용자로 실행하지 않습니다.

정리#

재현 가능한 빌드와 최소 권한 실행이 컨테이너 운영의 출발점입니다.