최근 몇 년간 많은 개발자들이 애플리케이션 배포를 위한 도구로 Docker를 채택하고 있습니다. Docker는 가상화를 통해 소프트웨어를 컨테이너라는 독립된 환경으로 패키징하여 실행할 수 있게 해주는 플랫폼입니다. 이 글에서는 Docker를 이용하여 기본 웹 서버를 배포하고, 애플리케이션을 컨테이너화하는 과정을 안내하려고 합니다. 초보자도 쉽게 따라 할 수 있도록 단계별로 설명하겠습니다.

Docker 설치하기
Docker를 사용하기 위해서는 먼저 해당 소프트웨어를 설치해야 합니다. 다양한 운영체제별로 설치 방법이 조금씩 다릅니다.
- 리눅스: 터미널에서 다음 명령어를 입력하여 설치할 수 있습니다.
sudo apt-get update
sudo apt-get install docker-ce
- 맥OS: 공식 Docker 웹사이트에 방문하여 Docker Desktop을 다운로드 후 설치해 주세요.
- 윈도우: 마찬가지로 Docker 공식 웹사이트에서 Docker Desktop을 다운로드하며 설치 절차를 따릅니다.
간단한 웹 애플리케이션 컨테이너화
이제 간단한 Node.js 웹 애플리케이션을 설정해 보겠습니다. 프로젝트 폴더를 생성하고 Dockerfile을 작성한 후, 애플리케이션 이미지를 빌드할 것입니다.
먼저, 다음과 같은 디렉토리 구조를 준비합니다:
my-web-app/ ├── Dockerfile ├── app/ │ ├── index.js │ ├── package.json │ └── ...
다음으로, Dockerfile을 아래와 같이 작성합니다:
FROM node:14 WORKDIR /usr/src/app COPY package*.json ./ RUN npm install COPY . . EXPOSE 8080 CMD ["node", "index.js"]
위 파일을 저장한 후, 아래의 명령어로 이미지 빌드를 실행합니다:
docker build -t my-web-app .
컨테이너 실행 및 웹 애플리케이션 확인하기
이미지를 빌드한 후, 이제 컨테이너를 실행할 수 있습니다. 다음 명령어를 사용하여 웹 애플리케이션을 실행합니다:
docker run -p 8080:8080 -d my-web-app
이제 웹 브라우저를 열고 http://localhost:8080에 접속하여 애플리케이션이 정상적으로 실행되는지 확인합니다.
다중 컨테이너 관리하기: Docker Compose
복잡한 애플리케이션 환경에서는 여러 개의 컨테이너가 필요할 수 있습니다. 이 때 Docker Compose를 사용하면 더욱 간편하게 관리할 수 있습니다. 예를 들어, 데이터베이스와 웹 애플리케이션이 함께 실행되는 구성을 만들어보겠습니다.
먼저, 아래와 같은 docker-compose.yml 파일을 작성합니다:
version: '3' services: web: build: . ports: - "8080:8080" db: image: "postgres:latest" environment: POSTGRES_PASSWORD: example
이 파일을 저장한 뒤, 다음 명령어로 여러 개의 컨테이너를 동시에 실행합니다:
docker-compose up -d
네트워크 및 데이터 관리
Docker는 네트워크와 데이터 관리를 위한 다양한 기능을 제공합니다. 필요한 경우 사용자 정의 네트워크를 생성하거나, 데이터 볼륨을 사용하여 컨테이너 간에 데이터를 공유할 수 있습니다.
네트워크를 생성하는 방법은 다음과 같습니다:
docker network create my-network
이후 컨테이너를 실행할 때 특정 네트워크를 지정할 수 있습니다:
docker run -d --network my-network --name my-container my-web-app
Docker 보안 및 최적화
애플리케이션을 배포할 때 보안 및 최적화를 고려하는 것도 중요합니다. Docker는 다양한 보안 관련 기능과 최적화 명령어를 제공합니다.
- 보안 관련 명령어:
docker scan my-web-app
- 최적화 관련 명령어:
docker image prune
애플리케이션 배포 예제: Python 사용하기
간단한 Python 스크립트를 작성하여 현재 날짜와 시간을 출력하는 프로그램을 만들어 보겠습니다. 아래와 같이 app.py 파일을 작성합니다:
import time from datetime import datetime current_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S") print(f"현재 날짜 및 시간: {current_time}")
그에 맞는 Dockerfile도 작성해 보겠습니다:
FROM python:3 WORKDIR /app COPY . /app/ CMD ["python", "./app.py"]
이제 도커 이미지를 빌드하고 실행하면 현재 날짜와 시간이 출력되는 프로그램이 실행됩니다.

결론
이번 글에서는 Docker를 사용하여 웹 애플리케이션을 배포하는 기본적인 과정을 살펴보았습니다. Docker를 통해 애플리케이션을 컨테이너화하고, 다양한 환경에서도 동일한 방식으로 실행할 수 있는 장점을 알게 되셨을 것입니다. 이러한 기초를 토대로 더 복잡한 애플리케이션 환경까지 확장해 나가기를 권장합니다.
자주 찾는 질문 Q&A
Docker란 무엇인가요?
Docker는 컨테이너 기반의 가상화 플랫폼으로, 애플리케이션과 그 의존성을 독립적인 환경에서 실행할 수 있게 도와줍니다.
Docker를 설치하는 방법은?
운영체제에 따라 다르지만, 리눅스에서는 패키지 관리자를 사용하고, 윈도우와 맥OS에서는 Docker Desktop을 다운로드하여 설치하면 됩니다.
Docker Compose는 무엇인가요?
Docker Compose는 여러 개의 컨테이너를 쉽게 정의하고 실행할 수 있게 해주는 도구로, 복잡한 애플리케이션 설정을 간소화해 줍니다.
0개의 댓글