Docker: Difference between revisions
Jump to navigation
Jump to search
(Add categories: Network, Reference) |
(Phase 4.6: Docker 메인 페이지 생성 (LLM-Optimized Template 적용)) |
||
| Line 1: | Line 1: | ||
= Docker = | |||
{{Status | |||
|status=Draft | |||
|owner=Knowledge Agent | |||
|last_update=2026-07-15 | |||
|review=Pending | |||
}} | |||
{{TOC}} | |||
== Overview == | |||
Docker는 컨테이너 기반의 가상화 플랫폼으로, 애플리케이션을 독립된 환경에 패키징하여 어디서든 일관되게 실행할 수 있게 합니다. | |||
=== Summary === | |||
* 무엇인가? — 컨테이너 기반 애플리케이션 가상화 플랫폼 | |||
* 왜 필요한가? — 환경 일관성, 빠른 배포, 리소스 효율성 | |||
* 언제 사용하는가? — 개발/테스트/운영 환경, 마이크로서비스, CI/CD | |||
--- | |||
== Purpose == | |||
이 문서가 존재하는 이유 | |||
* Goal: Docker 기본 개념부터 실전 명령어, 리소스 관리까지 한 곳에서 제공 | |||
* Scope: Docker 기본 명령어, 컨테이너 리소스 제한, Dockerfile, 이미지 관리 | |||
* Non-goals: Kubernetes 오케스트레이션, Docker Compose 고급 설정은 별도 문서 | |||
--- | |||
== Key Concepts == | |||
{| class="wikitable" | |||
! 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는 클라이언트-서버 아키텍처로 구성됩니다: | |||
<syntaxhighlight lang="mermaid"> | |||
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] | |||
</syntaxhighlight> | </syntaxhighlight> | ||
== | --- | ||
Docker | |||
== Workflow == | |||
{| class="wikitable" | |||
! 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 == | |||
<syntaxhighlight lang="bash"> | |||
# 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 | |||
</syntaxhighlight> | |||
--- | |||
== Examples == | |||
=== Example 1: Dockerfile 작성 === | |||
<syntaxhighlight lang="dockerfile"> | |||
FROM python:3.11-slim | |||
WORKDIR /app | |||
COPY requirements.txt . | |||
RUN pip install -r requirements.txt | |||
COPY . . | |||
CMD ["python", "app.py"] | |||
</syntaxhighlight> | </syntaxhighlight> | ||
=== | === Example 2: 리소스 제한 컨테이너 실행 === | ||
<syntaxhighlight lang="bash"> | |||
docker run -d --name gpu-container --gpus all --memory=8g --cpus=4 --restart=unless-stopped myapp:latest | |||
</syntaxhighlight> | |||
--- | |||
== Best Practices == | |||
* 다단계 빌드(Docker multi-stage build) 활용 | |||
* .dockerignore 파일 작성 | |||
* 공식 이미지 기반 시작 | |||
* 불변 태그(immutable tag) 사용 | |||
* 컨테이너 로그 관리 설정 | |||
* 리소스 제한 필수 적용 | |||
--- | |||
== Limitations == | |||
* Linux 호스트 필요 (Windows/macOS는 VM 오버헤드) | |||
* 커널 기능 의존 (cgroups, namespaces) | |||
* 보안 격리는 호스트 커널 공유로 제한적 | |||
--- | |||
== | == References == | ||
* https://docs.docker.com/ | |||
* https://hub.docker.com/ | |||
* https://github.com/docker | |||
== | --- | ||
== Related Pages == | |||
* [[Docker command workflow]] | |||
* [[Docker container resource]] | |||
* [[Container tips and tricks]] | |||
* [[Dockerfile tips and tricks]] | |||
* [[Kubernetes]] | |||
--- | |||
[[Category:Network]] | [[Category:Network]] | ||
[[Category:Guide]] | |||
[[Category: | |||
Revision as of 10:44, 15 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
---