Docker 컨테이너 구축 및 업데이트: 초보자를 위한 실용적인 실습 가이드

발행: (2025년 12월 12일 오전 03:56 GMT+9)
6 min read
원문: Dev.to

Source: Dev.to

Introduction

오늘날 빠르게 변화하는 개발 환경에서는 일관성과 이식성이 매우 중요합니다. 애플리케이션은 서로 다른 머신, 환경, 혹은 클라우드에서도 안정적으로 실행되어야 합니다. Docker는 애플리케이션과 그 의존성을 컨테이너에 패키징함으로써 어디서든 동일하게 동작하도록 해줍니다.

이 실습 가이드에서는 간단한 Node.js “Todo List” 애플리케이션을 컨테이너화하는 방법을 배웁니다. Node.js에 대한 사전 지식은 필요 없으며, Docker가 어떻게 이미지를 빌드하고, 패키징하며, 애플리케이션을 실행하는지 이해하는 데 초점을 맞춥니다.

튜토리얼을 마치면 다음을 할 수 있게 됩니다:

  • Dockerfile을 사용해 Docker 이미지 빌드하기
  • 컨테이너 안에서 애플리케이션 실행하기
  • 로컬 호스트에 앱 노출하기
  • 이미지, 컨테이너, 레이어가 어떻게 상호 작용하는지 이해하기

Prerequisites

다음 도구들이 설치되어 있는지 확인하세요:

  • Docker Desktop (최신 버전)
  • Git (샘플 앱을 클론하기 위해)
  • VS Code 또는 기타 코드 편집기

이 도구들을 사용하면 컨테이너를 원활하게 빌드하고 실행할 수 있습니다.

Step 1: Prepare the Application

VS Code에서 새 폴더를 만들고 이름을 container 로 지정합니다.

Folder view

그 폴더에서 터미널을 엽니다.

Terminal view

샘플 Node.js 애플리케이션을 클론합니다:

git clone https://github.com/docker/getting-started-app.git

다음과 같은 폴더 구조가 보일 것입니다:

getting-started-app/
│── .dockerignore
│── package.json
│── README.md
│── spec/
│── src/
└── yarn.lock

Folder structure

이것이 컨테이너화할 소스 코드입니다.

Step 2: Create the Dockerfile

getting-started-app 폴더 안에 Dockerfile이라는 파일을 만들고 다음 내용을 추가합니다:

Dockerfile example

# syntax=docker/dockerfile:1

FROM node:lts-alpine
WORKDIR /app
COPY . .
RUN yarn install --production
CMD ["node", "src/index.js"]
EXPOSE 3000

Explanation

  • FROM – 가벼운 Node.js 베이스 이미지를 선택합니다
  • WORKDIR – 컨테이너 내부 작업 디렉터리를 설정합니다
  • COPY – 소스 코드를 컨테이너로 복사합니다
  • RUN – 프로덕션 의존성을 설치합니다
  • CMD – 앱을 시작할 명령을 정의합니다
  • EXPOSE – 앱이 수신 대기하는 포트를 문서화합니다

Step 3: Build the Docker Image

프로젝트 폴더로 이동합니다:

cd /path/to/getting-started-app

Navigate to folder

이미지를 빌드합니다:

docker build -t getting-started .

Docker build output

무슨 일이 일어나는지:

  • Docker가 Node.js 베이스 이미지를 다운로드합니다(이미 존재한다면 건너뜁니다)
  • 앱 파일들을 이미지에 복사합니다
  • 의존성을 설치합니다
  • 모든 것이 getting-started 라는 이름의 Docker 이미지로 패키징됩니다

Step 4: Run Your Container

컨테이너를 시작합니다:

docker run -d -p 127.0.0.1:3000:3000 getting-started

Flags explained

  • -d – 컨테이너를 백그라운드(분리된) 상태로 실행합니다
  • -p HOST:CONTAINER – 컨테이너 포트 3000을 로컬 포트 3000에 매핑합니다

브라우저에서 http://127.0.0.1:3000 으로 접속하세요. Todo List 앱이 실행될 것입니다. 작업을 추가하고, 완료 표시를 하고, 모든 것이 컨테이너 안에서 어떻게 동작하는지 확인해 보세요.

Step 5: Verify Running Containers

실행 중인 컨테이너를 확인합니다:

docker ps

컨테이너 ID, 이미지 이름, 포트 매핑, 상태 등이 표시되어 앱이 정상적으로 실행 중임을 확인할 수 있습니다.

Step 6: Update the Application

예를 들어 “empty text” 메시지를 다음과 같이 바꾸고 싶다고 가정해 보겠습니다:

You have no todo items yet! Add one above!

src/static/js/app.js 파일을 열고 56번째 줄을 수정합니다:

- No items yet! Add one above!
+ You have no todo items yet! Add one above!

Editing code

수정된 코드를 반영해 Docker 이미지를 다시 빌드합니다:

docker build -t getting-started .

업데이트된 이미지를 사용해 새 컨테이너를 시작합니다:

docker run -d -p 127.0.0.1:3000:3000 getting-started

이제 변경 사항이 실행 중인 애플리케이션에 반영되었습니다.

Back to Blog

관련 글

더 보기 »