정지용
기술스택 목록
DevOps

Docker

프로젝트 21에서 사용했습니다. 각 프로젝트에서 어떤 역할로 썼는지 아래에 정리했습니다.

이 기술은 무엇인가요?

애플리케이션을 실행 환경과 함께 컨테이너로 패키징해 어디서든 동일하게 구동하는 도구

Docker는 애플리케이션과 그 실행에 필요한 라이브러리, 설정, 런타임을 하나의 격리된 단위인 컨테이너로 패키징하는 플랫폼이다. '내 컴퓨터에서는 되는데'라는 문제, 즉 개발·테스트·운영 환경 간 차이로 인한 오류를 없애기 위해 만들어졌다. 가상머신처럼 OS 전체를 복제하지 않고 커널을 공유하면서 프로세스를 격리하기 때문에 훨씬 가볍고 빠르게 실행된다. 이미지를 한 번 빌드하면 로컬, CI, 서버 등 어디서든 같은 동작을 보장한다.

이럴 때 사용합니다

  • 로컬, CI, 운영 환경의 실행 조건을 동일하게 맞추고 싶을 때
  • 런타임 버전이나 시스템 의존성이 다른 여러 서비스를 함께 운영할 때
  • 배포 환경에 무엇이 설치돼 있는지와 무관하게 애플리케이션을 이식하고 싶을 때
  • E2E 테스트처럼 실행 환경 자체를 격리해 재현 가능하게 만들고 싶을 때

핵심 개념

Image
애플리케이션 코드, 의존성, 설정을 포함한 읽기 전용 템플릿으로, 컨테이너를 실행하기 위한 원본이다.
Container
이미지를 기반으로 실제로 실행되는 격리된 프로세스 인스턴스이며, 하나의 이미지로 여러 컨테이너를 띄울 수 있다.
Dockerfile
이미지를 어떻게 빌드할지 순서대로 정의하는 텍스트 파일로, 베이스 이미지·설치 명령·실행 명령 등을 기술한다.
Layer
이미지는 여러 개의 읽기 전용 레이어로 구성되며, 각 레이어는 캐시되어 빌드 속도와 저장 공간 효율을 높인다.
Multi-stage build
빌드용 환경과 실행용 환경을 여러 단계로 나눠 최종 이미지에는 실행에 필요한 산출물만 남기는 기법이다.
Registry
이미지를 저장하고 배포하는 저장소로, 빌드된 이미지를 push하고 필요한 환경에서 pull해 사용한다.

간단한 Node.js 애플리케이션 컨테이너화

베이스 이미지 위에 의존성을 먼저 설치하고 소스 코드를 복사한 뒤, 컨테이너 시작 시 실행할 명령을 지정하는 기본적인 Dockerfile이다.

Dockerfile
FROM node:20-alpine

WORKDIR /app

COPY package*.json ./
RUN npm install --production

COPY . .

EXPOSE 3000
CMD ["node", "index.js"]

처음 쓸 때 흔한 함정

  • 레이어 캐시를 고려하지 않고 파일을 복사하면 코드 한 줄만 바뀌어도 전체가 재빌드된다
  • 컨테이너 안의 파일 시스템은 기본적으로 휘발성이라 종료 시 데이터가 사라진다
  • 이미지에 불필요한 빌드 도구까지 남겨 최종 이미지 크기가 불필요하게 커진다

위 개요는 기술 학습을 돕기 위해 자동 생성된 일반 설명입니다. 정확한 사양과 최신 정보는 공식 문서를 확인하세요.

프로젝트별 활용 방식

위 개념이 실제 프로젝트에서 어떻게 쓰였는지 보여줍니다.

  1. 03Web3
    2026년 7월

    NFT 런치패드 NestJS 백엔드 서비스

    NestJS와 TypeORM으로 구성된 NFT 런치패드 백엔드로, Docker 다중 환경과 컨트랙트 연동 스크립트를 함께 관리한다

    이 프로젝트에서의 Docker 활용

    런타임/e2e/e2e DB 용도로 컨테이너를 분리해 환경을 격리

    nft-launchpad-backend-service-docs프로젝트 자세히 보기 →
  2. 08Web3
    2026년 7월

    Discord NFT 홀더 인증 서비스

    Discord 사용자의 지갑 서명과 NFT 보유 여부를 검증해 서버 접근 권한을 자동으로 부여하는 NestJS 기반 인증 서비스

    이 프로젝트에서의 Docker 활용

    Dockerfile.e2e로 E2E 테스트 환경 컨테이너화

    discord-nft-holder-verification-docs프로젝트 자세히 보기 →
  3. 18인프라
    2026년 7월

    NFT 마켓 어드민 GitOps 배포 문서

    NFT 마켓플레이스 어드민 프런트엔드의 ArgoCD 기반 GitOps 배포 구조와 CI/CD 흐름을 정리한 문서 저장소입니다.

    이 프로젝트에서의 Docker 활용

    정적 서빙 스택을 포함한 프런트엔드 컨테이너 이미지 빌드

    nft-marketplace-admin-frontend-argocd-deploy-docs프로젝트 자세히 보기 →

함께 사용한 기술

위 프로젝트들에서 같이 쓰인 다른 기술입니다.