반응형

Docker는 컨테이너 기반의 가상화 기술을 활용하여 애플리케이션을 패키징, 배포, 실행하는 데 사용됩니다. 이번 글에서는 Docker를 이용한 애플리케이션 배포 방법을 자세하게 설명합니다.

1. Docker란?

Docker는 컨테이너 기술을 활용하여 애플리케이션을 일관된 환경에서 실행할 수 있도록 도와주는 도구입니다. 컨테이너는 운영 체제 수준에서 격리된 환경을 제공하며, 종속성을 포함한 애플리케이션을 실행할 수 있습니다.

Docker의 특징

  • 경량성: 가상 머신보다 가볍고, 실행 속도가 빠릅니다.
  • 이식성: 어디서든 동일한 환경에서 애플리케이션을 실행할 수 있습니다.
  • 확장성: 마이크로서비스 아키텍처에 적합하며, 쉽게 확장 가능합니다.
  • 자동화: 배포 및 스케일링을 자동화할 수 있습니다.

2. Docker 설치

Docker 설치 방법

  1. Docker 공식 홈페이지에서 운영 체제에 맞는 Docker Desktop을 다운로드합니다.
  2. 설치 후, 터미널에서 다음 명령어를 입력하여 정상적으로 설치되었는지 확인합니다.
    docker --version
  3. Docker가 정상적으로 실행되고 있는지 확인합니다.
    docker run hello-world

3. Docker 기본 개념

Docker를 활용한 애플리케이션 배포를 이해하려면 먼저 Docker의 기본 개념을 알아야 합니다.

Docker 이미지(Image)

컨테이너를 실행하는 데 필요한 파일과 설정을 포함한 불변(Immutable) 패키지입니다.

Docker 컨테이너(Container)

이미지를 기반으로 실행되는 독립적인 환경으로, 실제 애플리케이션이 동작하는 단위입니다.

Dockerfile

Docker 이미지를 생성하기 위한 설정 파일입니다.

Docker Hub

공개 및 개인 이미지를 저장하고 공유할 수 있는 Docker의 공식 저장소입니다.

4. Dockerfile 작성

Dockerfile을 이용하여 애플리케이션을 컨테이너화할 수 있습니다.

예제: Node.js 애플리케이션을 Docker로 배포하기

1) 프로젝트 디렉토리 생성

mkdir my-docker-app
cd my-docker-app

2) Node.js 애플리케이션 생성

npm init -y
npm install express

3) 서버 코드 작성 (server.js)

const express = require('express');
const app = express();
const PORT = 3000;

app.get('/', (req, res) => {
    res.send('Hello, Docker!');
});

app.listen(PORT, () => {
    console.log(`서버가 ${PORT}번 포트에서 실행 중입니다.`);
});

4) Dockerfile 작성

# 베이스 이미지 설정
FROM node:14

# 작업 디렉토리 설정
WORKDIR /app

# 필요한 파일 복사
COPY package.json .
COPY package-lock.json .
RUN npm install
COPY . .

# 애플리케이션 실행
CMD ["node", "server.js"]

# 컨테이너 실행 시 사용할 포트
EXPOSE 3000

5. Docker 이미지 빌드 및 실행

1) Docker 이미지 빌드

docker build -t my-node-app .

2) Docker 컨테이너 실행

docker run -p 3000:3000 my-node-app

이제 브라우저에서 http://localhost:3000에 접속하면 "Hello, Docker!" 메시지를 확인할 수 있습니다.

6. Docker Compose 활용

Docker Compose를 사용하면 여러 개의 컨테이너를 쉽게 관리할 수 있습니다.

1) Docker Compose 설치

Docker Desktop을 설치하면 기본적으로 포함되어 있습니다.

2) docker-compose.yml 파일 작성

version: '3'
services:
  app:
    build: .
    ports:
      - "3000:3000"
    environment:
      NODE_ENV: production

3) Docker Compose 실행

docker-compose up -d

7. Docker Hub에 이미지 푸시하기

1) Docker Hub 로그인

docker login

2) 이미지 태그 설정

docker tag my-node-app mydockerhubusername/my-node-app

3) Docker Hub에 이미지 푸시

docker push mydockerhubusername/my-node-app

이제 다른 환경에서도 해당 이미지를 사용할 수 있습니다.

8. Kubernetes를 이용한 확장

Docker를 이용하면 Kubernetes와 함께 애플리케이션을 쉽게 확장할 수 있습니다. Kubernetes의 핵심 개념은 다음과 같습니다.

  • Pod: 하나 이상의 컨테이너를 실행하는 최소 실행 단위
  • Service: 네트워크를 통해 Pod에 접근할 수 있도록 하는 방법
  • Deployment: 애플리케이션 배포 및 업데이트 관리

9. 결론

Docker를 활용한 애플리케이션 배포 방법을 살펴보았습니다. Docker의 기본 개념, Dockerfile 작성, 컨테이너 실행, Docker Compose 활용, Docker Hub 배포, Kubernetes 확장까지 실무에서 필수적인 요소들을 다루었습니다. 이를 바탕으로 다양한 프로젝트에 적용해 보시길 바랍니다.

반응형

+ Recent posts