macOS 또는 Windows 에서 Docker 개발 환경 설정 방법

DockerBeginner
지금 연습하기

소개

Docker 는 개발자들에게 필수적인 도구가 되어 컨테이너화된 애플리케이션을 손쉽게 생성하고 관리할 수 있도록 지원합니다. 이 튜토리얼에서는 macOS 또는 Windows 에서 Docker 개발 환경을 설정하는 과정을 안내하여 Docker 기반 애플리케이션을 구축하고 배포하기 위한 필수 도구와 지식을 갖추도록 돕습니다.

Docker 기본 이해

Docker 란 무엇인가?

Docker 는 개발자가 일관되고 격리된 환경 (컨테이너) 에서 애플리케이션을 구축, 배포 및 실행할 수 있도록 지원하는 오픈소스 플랫폼입니다. 컨테이너는 애플리케이션과 모든 종속성을 패키징하여, 기반 인프라에 관계없이 애플리케이션이 안정적이고 일관되게 실행되도록 보장합니다.

Docker 컨테이너

Docker 컨테이너는 애플리케이션 실행에 필요한 모든 요소 (코드, 런타임, 시스템 도구, 라이브러리) 를 포함하는 경량, 독립적, 실행 가능한 패키지입니다. 컨테이너는 서로 그리고 호스트 운영 체제로부터 격리되어 애플리케이션이 일관되고 안정적인 환경에서 실행될 수 있도록 합니다.

graph LR A[애플리케이션] --> B[종속성] B --> C[런타임] C --> D[OS] D --> E[Docker 컨테이너] E --> F[Docker 호스트]

Docker 이미지

Docker 이미지는 컨테이너의 구성 요소입니다. 이미지는 Docker 컨테이너를 생성하기 위한 지침을 담고 있는 읽기 전용 템플릿입니다. 이미지는 Dockerfile 을 사용하여 생성되며, Dockerfile 은 이미지를 구축하는 데 필요한 모든 명령어를 포함하는 텍스트 파일입니다.

Docker 레지스트리

Docker 레지스트리는 Docker 이미지를 저장하고 배포하는 시스템입니다. 가장 인기 있는 공개 레지스트리는 Docker Hub 이며, 다양한 애플리케이션 및 서비스에 대한 사전 구축된 이미지를 광범위하게 제공합니다.

Docker 아키텍처

Docker 는 Docker 클라이언트가 Docker 데몬과 통신하는 클라이언트 - 서버 아키텍처를 사용합니다. Docker 데몬은 Docker 컨테이너와 이미지를 구축, 실행 및 관리하는 역할을 합니다.

구성 요소 설명
Docker 클라이언트 Docker 시스템의 사용자 인터페이스입니다. 사용자가 Docker 데몬과 상호 작용할 수 있도록 합니다.
Docker 데몬 Docker 컨테이너와 이미지를 관리하는 백그라운드 프로세스입니다.
Docker 레지스트리 Docker 이미지를 저장하고 배포하는 저장소입니다.
Docker 네트워킹 컨테이너가 서로 그리고 외부 세계와 통신할 수 있도록 합니다.
Docker 볼륨 Docker 컨테이너에서 생성되고 사용되는 데이터를 영구적으로 저장하는 방법을 제공합니다.

macOS 또는 Windows 에 Docker 설치하기

macOS 에 Docker 설치하기

  1. Docker 웹사이트를 방문하여 Mac 용 Docker Desktop 을 다운로드합니다.
  2. 설치 프로그램을 실행하고 화면의 지침에 따라 설치를 완료합니다.
  3. 설치가 완료되면 메뉴 표시줄에 Docker 아이콘이 나타나 Docker 가 실행 중임을 나타냅니다.

Windows 에 Docker 설치하기

  1. Docker 웹사이트를 방문하여 Windows 용 Docker Desktop 을 다운로드합니다.
  2. 설치 프로그램을 실행하고 화면의 지침에 따라 설치를 완료합니다.
  3. 설치가 완료되면 시스템 트레이에 Docker 아이콘이 나타나 Docker 가 실행 중임을 나타냅니다.

설치 확인

Docker 설치 후, 터미널 (macOS) 또는 PowerShell(Windows) 을 열고 다음 명령어를 실행하여 설치를 확인할 수 있습니다.

docker version

이 명령어는 시스템에 설치된 Docker 클라이언트와 Docker 서버 (데몬) 의 버전을 표시합니다.

Docker Compose 설치

Docker Compose 는 여러 컨테이너 Docker 애플리케이션을 정의하고 실행하는 도구입니다. Docker Compose 를 설치하려면 다음과 같이 하십시오.

  1. Docker Compose GitHub 저장소를 방문하여 운영 체제에 맞는 최신 버전의 Docker Compose 를 다운로드합니다.
  2. 다운로드한 파일을 실행 가능하게 하려면 다음 명령어를 실행합니다 (Linux/macOS).
    chmod +x docker-compose
  3. Docker Compose 바이너리를 시스템의 PATH 에 있는 디렉터리 (예: /usr/local/bin/ 또는 ~/bin/) 로 이동합니다.

이제 다음 명령어를 실행하여 설치를 확인할 수 있습니다.

docker-compose version

이 명령어는 시스템에 설치된 Docker Compose 의 버전을 표시합니다.

Docker 개발 환경 구축

Dockerfile 생성

Dockerfile 은 Docker 이미지를 구축하는 데 필요한 모든 명령어가 포함된 텍스트 파일입니다. 간단한 Python 웹 애플리케이션을 위한 예시 Dockerfile 은 다음과 같습니다.

FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD ["python", "app.py"]

이 Dockerfile 은 다음과 같이 작동합니다.

  1. python:3.9-slim 기본 이미지에서 시작합니다.
  2. 작업 디렉터리를 /app으로 설정합니다.
  3. requirements.txt 파일을 작업 디렉터리로 복사합니다.
  4. requirements.txt에 나열된 Python 종속성을 설치합니다.
  5. 애플리케이션 코드를 작업 디렉터리로 복사합니다.
  6. 애플리케이션을 실행할 명령 (python app.py) 을 지정합니다.

Docker 이미지 구축

Dockerfile 에서 Docker 이미지를 구축하려면 Dockerfile 과 같은 디렉터리에서 다음 명령어를 실행합니다.

docker build -t my-python-app .

이렇게 하면 태그가 my-python-app인 Docker 이미지가 구축됩니다.

Docker 컨테이너 실행

my-python-app 이미지에서 Docker 컨테이너를 실행하려면 다음 명령어를 사용합니다.

docker run -p 8080:8080 my-python-app

이렇게 하면 새 컨테이너가 시작되고 호스트의 포트 8080 이 컨테이너의 포트 8080 으로 매핑됩니다.

Docker Compose 를 이용한 개발

Docker Compose 는 여러 컨테이너 Docker 애플리케이션을 정의하고 실행하는 도구입니다. 간단한 웹 애플리케이션과 데이터베이스를 위한 예시 docker-compose.yml 파일은 다음과 같습니다.

version: "3"
services:
  web:
    build: .
    ports:
      - 8080:8080
    depends_on:
      - db
  db:
    image: postgres:13
    environment:
      POSTGRES_DB: myapp
      POSTGRES_USER: myapp
      POSTGRES_PASSWORD: secret
    volumes:
      - db-data:/var/lib/postgresql/data
volumes:
  db-data:

docker-compose.yml 파일은 webdb 두 개의 서비스를 정의합니다. web 서비스는 현재 디렉터리에서 Docker 이미지를 구축하고 호스트의 포트 8080 을 컨테이너의 포트 8080 으로 매핑합니다. db 서비스는 공식 PostgreSQL 이미지를 사용하고 애플리케이션을 위한 데이터베이스를 설정합니다.

애플리케이션을 시작하려면 다음을 실행합니다.

docker-compose up -d

이렇게 하면 webdb 컨테이너가 백그라운드에서 시작됩니다.

요약

이 튜토리얼을 따라 하면 macOS 또는 Windows 컴퓨터에 Docker 를 설치하고 Docker 의 기본 사항을 이해하며, 자신의 필요에 맞는 Docker 개발 환경을 구축하는 방법을 배울 수 있습니다. 이러한 기술을 통해 개발 워크플로우를 간소화하고 Docker 가 제공하는 일관되고 재현 가능한 환경, 쉬운 배포 및 향상된 확장성과 같은 이점을 활용할 수 있습니다.