Docker

From HPCWIKI
Revision as of 11:28, 17 July 2026 by Clara (talk | contribs) (Fix: remove --- horizontal lines (12 removed))
Jump to navigation Jump to search

Docker

Template:Status

Template:TOC

Overview

Docker는 컨테이너 기반의 가상화 플랫폼으로, 애플리케이션을 독립된 환경에 패키징하여 어디서든 일관되게 실행할 수 있게 합니다.

Summary

  • 무엇인가? — 컨테이너 기반 애플리케이션 가상화 플랫폼
  • 왜 필요한가? — 환경 일관성, 빠른 배포, 리소스 효율성
  • 언제 사용하는가? — 개발/테스트/운영 환경, 마이크로서비스, CI/CD


Purpose

이 문서가 존재하는 이유

  • Goal: Docker 기본 개념부터 실전 명령어, 리소스 관리까지 한 곳에서 제공
  • Scope: Docker 기본 명령어, 컨테이너 리소스 제한, Dockerfile, 이미지 관리
  • Non-goals: Kubernetes 오케스트레이션, Docker Compose 고급 설정은 별도 문서


Key Concepts

Concept Description Related
Container 독립된 실행 환경 (OS 레벨 가상화) Docker
Image 컨테이너 생성을 위한 템플릿 Docker command workflow
Dockerfile 이미지 빌드 설정 파일 Docker command workflow
Volume 컨테이너 외부 저장소 마운트 Docker library sharing
Resource Limit CPU/메모리/디스크 사용량 제한 Docker container resource


Architecture

Docker는 클라이언트-서버 아키텍처로 구성됩니다:

graph TD
    A[Docker Client] --> B[Docker Daemon]
    B --> C[Container Runtime]
    B --> D[Image Store]
    B --> E[Network Manager]
    B --> F[Volume Manager]
    C --> G[Container 1]
    C --> H[Container 2]
    C --> I[Container N]


Workflow

Stage Input Output
Build Dockerfile Docker Image
Run Docker Image Running Container
Push Docker Image Registry Upload
Pull Registry Docker Image Download


Detailed Explanation

Docker 기본

Docker는 Linux 컨테이너(LXC)를 기반으로 합니다. 호스트 커널을 공유하면서 격리된 환경을 제공합니다.

Docker 명령어 워크플로우

Dockerfile 작성 → 이미지 빌드 → 컨테이너 실행 → 레지스트리 푸시 → 다른 시스템에서 풀/실행

Docker 컨테이너 리소스

컨테이너는 기본적으로 CPU, 메모리, 디스크 사용량이 제한됩니다. --memory, --cpus 옵션으로 제한을 설정할 수 있습니다.

Docker 라이브러리 공유

볼륨(Volume)과 바인드 마운트를 통해 호스트와 컨테이너 간 파일을 공유합니다.


Configuration

# Docker 버전 확인
docker --version

# 이미지 빌드
docker build -t myapp:latest .

# 컨테이너 실행
docker run -d --name myapp --memory=2g --cpus=2 myapp:latest

# 컨테이너 리소스 제한
docker run -d --memory=4g --memory-swap=4g --cpus=4 myapp:latest

# 로그 확인
docker logs -f myapp

# 컨테이너 상태 확인
docker ps -a
docker stats


Examples

Example 1: Dockerfile 작성

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

Example 2: 리소스 제한 컨테이너 실행

docker run -d   --name gpu-container   --gpus all   --memory=8g   --cpus=4   --restart=unless-stopped   myapp:latest


Best Practices

  • 다단계 빌드(Docker multi-stage build) 활용
  • .dockerignore 파일 작성
  • 공식 이미지 기반 시작
  • 불변 태그(immutable tag) 사용
  • 컨테이너 로그 관리 설정
  • 리소스 제한 필수 적용


Limitations

  • Linux 호스트 필요 (Windows/macOS는 VM 오버헤드)
  • 커널 기능 의존 (cgroups, namespaces)
  • 보안 격리는 호스트 커널 공유로 제한적


References


Related Pages

Knowledge Graph

Related

KubernetesContainerDockerfileDocker Compose