소개
Docker 는 개발자들에게 필수적인 도구가 되어 컨테이너화된 애플리케이션을 손쉽게 생성하고 관리할 수 있도록 지원합니다. 이 튜토리얼에서는 macOS 또는 Windows 에서 Docker 개발 환경을 설정하는 과정을 안내하여 Docker 기반 애플리케이션을 구축하고 배포하기 위한 필수 도구와 지식을 갖추도록 돕습니다.
Docker 는 개발자들에게 필수적인 도구가 되어 컨테이너화된 애플리케이션을 손쉽게 생성하고 관리할 수 있도록 지원합니다. 이 튜토리얼에서는 macOS 또는 Windows 에서 Docker 개발 환경을 설정하는 과정을 안내하여 Docker 기반 애플리케이션을 구축하고 배포하기 위한 필수 도구와 지식을 갖추도록 돕습니다.
Docker 는 개발자가 일관되고 격리된 환경 (컨테이너) 에서 애플리케이션을 구축, 배포 및 실행할 수 있도록 지원하는 오픈소스 플랫폼입니다. 컨테이너는 애플리케이션과 모든 종속성을 패키징하여, 기반 인프라에 관계없이 애플리케이션이 안정적이고 일관되게 실행되도록 보장합니다.
Docker 컨테이너는 애플리케이션 실행에 필요한 모든 요소 (코드, 런타임, 시스템 도구, 라이브러리) 를 포함하는 경량, 독립적, 실행 가능한 패키지입니다. 컨테이너는 서로 그리고 호스트 운영 체제로부터 격리되어 애플리케이션이 일관되고 안정적인 환경에서 실행될 수 있도록 합니다.
Docker 이미지는 컨테이너의 구성 요소입니다. 이미지는 Docker 컨테이너를 생성하기 위한 지침을 담고 있는 읽기 전용 템플릿입니다. 이미지는 Dockerfile 을 사용하여 생성되며, Dockerfile 은 이미지를 구축하는 데 필요한 모든 명령어를 포함하는 텍스트 파일입니다.
Docker 레지스트리는 Docker 이미지를 저장하고 배포하는 시스템입니다. 가장 인기 있는 공개 레지스트리는 Docker Hub 이며, 다양한 애플리케이션 및 서비스에 대한 사전 구축된 이미지를 광범위하게 제공합니다.
Docker 는 Docker 클라이언트가 Docker 데몬과 통신하는 클라이언트 - 서버 아키텍처를 사용합니다. Docker 데몬은 Docker 컨테이너와 이미지를 구축, 실행 및 관리하는 역할을 합니다.
| 구성 요소 | 설명 |
|---|---|
| Docker 클라이언트 | Docker 시스템의 사용자 인터페이스입니다. 사용자가 Docker 데몬과 상호 작용할 수 있도록 합니다. |
| Docker 데몬 | Docker 컨테이너와 이미지를 관리하는 백그라운드 프로세스입니다. |
| Docker 레지스트리 | Docker 이미지를 저장하고 배포하는 저장소입니다. |
| Docker 네트워킹 | 컨테이너가 서로 그리고 외부 세계와 통신할 수 있도록 합니다. |
| Docker 볼륨 | Docker 컨테이너에서 생성되고 사용되는 데이터를 영구적으로 저장하는 방법을 제공합니다. |
Docker 설치 후, 터미널 (macOS) 또는 PowerShell(Windows) 을 열고 다음 명령어를 실행하여 설치를 확인할 수 있습니다.
docker version
이 명령어는 시스템에 설치된 Docker 클라이언트와 Docker 서버 (데몬) 의 버전을 표시합니다.
Docker Compose 는 여러 컨테이너 Docker 애플리케이션을 정의하고 실행하는 도구입니다. Docker Compose 를 설치하려면 다음과 같이 하십시오.
chmod +x docker-compose
/usr/local/bin/ 또는 ~/bin/) 로 이동합니다.이제 다음 명령어를 실행하여 설치를 확인할 수 있습니다.
docker-compose version
이 명령어는 시스템에 설치된 Docker Compose 의 버전을 표시합니다.
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 은 다음과 같이 작동합니다.
python:3.9-slim 기본 이미지에서 시작합니다./app으로 설정합니다.requirements.txt 파일을 작업 디렉터리로 복사합니다.requirements.txt에 나열된 Python 종속성을 설치합니다.python app.py) 을 지정합니다.Dockerfile 에서 Docker 이미지를 구축하려면 Dockerfile 과 같은 디렉터리에서 다음 명령어를 실행합니다.
docker build -t my-python-app .
이렇게 하면 태그가 my-python-app인 Docker 이미지가 구축됩니다.
my-python-app 이미지에서 Docker 컨테이너를 실행하려면 다음 명령어를 사용합니다.
docker run -p 8080:8080 my-python-app
이렇게 하면 새 컨테이너가 시작되고 호스트의 포트 8080 이 컨테이너의 포트 8080 으로 매핑됩니다.
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 파일은 web과 db 두 개의 서비스를 정의합니다. web 서비스는 현재 디렉터리에서 Docker 이미지를 구축하고 호스트의 포트 8080 을 컨테이너의 포트 8080 으로 매핑합니다. db 서비스는 공식 PostgreSQL 이미지를 사용하고 애플리케이션을 위한 데이터베이스를 설정합니다.
애플리케이션을 시작하려면 다음을 실행합니다.
docker-compose up -d
이렇게 하면 web과 db 컨테이너가 백그라운드에서 시작됩니다.
이 튜토리얼을 따라 하면 macOS 또는 Windows 컴퓨터에 Docker 를 설치하고 Docker 의 기본 사항을 이해하며, 자신의 필요에 맞는 Docker 개발 환경을 구축하는 방법을 배울 수 있습니다. 이러한 기술을 통해 개발 워크플로우를 간소화하고 Docker 가 제공하는 일관되고 재현 가능한 환경, 쉬운 배포 및 향상된 확장성과 같은 이점을 활용할 수 있습니다.