Docker: Difference between revisions
Jump to navigation
Jump to search
(Added Knowledge Graph section) |
(Fix: remove --- horizontal lines (12 removed)) |
||
| Line 20: | Line 20: | ||
* 언제 사용하는가? — 개발/테스트/운영 환경, 마이크로서비스, CI/CD | * 언제 사용하는가? — 개발/테스트/운영 환경, 마이크로서비스, CI/CD | ||
== Purpose == | == Purpose == | ||
| Line 30: | Line 29: | ||
* Non-goals: Kubernetes 오케스트레이션, Docker Compose 고급 설정은 별도 문서 | * Non-goals: Kubernetes 오케스트레이션, Docker Compose 고급 설정은 별도 문서 | ||
== Key Concepts == | == Key Concepts == | ||
| Line 60: | Line 58: | ||
|} | |} | ||
== Architecture == | == Architecture == | ||
| Line 78: | Line 75: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== Workflow == | == Workflow == | ||
| Line 104: | Line 100: | ||
|} | |} | ||
== Detailed Explanation == | == Detailed Explanation == | ||
| Line 124: | Line 119: | ||
볼륨(Volume)과 바인드 마운트를 통해 호스트와 컨테이너 간 파일을 공유합니다. | 볼륨(Volume)과 바인드 마운트를 통해 호스트와 컨테이너 간 파일을 공유합니다. | ||
== Configuration == | == Configuration == | ||
| Line 149: | Line 143: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== Examples == | == Examples == | ||
| Line 170: | Line 163: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== Best Practices == | == Best Practices == | ||
| Line 181: | Line 173: | ||
* 리소스 제한 필수 적용 | * 리소스 제한 필수 적용 | ||
== Limitations == | == Limitations == | ||
| Line 189: | Line 180: | ||
* 보안 격리는 호스트 커널 공유로 제한적 | * 보안 격리는 호스트 커널 공유로 제한적 | ||
== References == | == References == | ||
| Line 197: | Line 187: | ||
* https://github.com/docker | * https://github.com/docker | ||
== Related Pages == | == Related Pages == | ||
| Line 207: | Line 196: | ||
* [[Kubernetes]] | * [[Kubernetes]] | ||
[[Category:Network]] | [[Category:Network]] | ||
Revision as of 11:28, 17 July 2026
Docker
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
- Docker command workflow
- Docker container resource
- Container tips and tricks
- Dockerfile tips and tricks
- Kubernetes
Knowledge Graph
Related
→ Kubernetes → Container → Dockerfile → Docker Compose