소개
Docker 는 강력한 컨테이너화 플랫폼을 제공하여 소프트웨어 배포 방식을 혁신했습니다. 이 튜토리얼은 Docker 서비스를 올바르게 시작하는 포괄적인 가이드를 제공하여 개발자 및 시스템 관리자가 Docker 서비스를 효율적이고 안정적으로 구성 및 시작하는 데 필요한 기본 원리와 실용적인 기술을 이해하는 데 도움을 줍니다.
Docker 는 강력한 컨테이너화 플랫폼을 제공하여 소프트웨어 배포 방식을 혁신했습니다. 이 튜토리얼은 Docker 서비스를 올바르게 시작하는 포괄적인 가이드를 제공하여 개발자 및 시스템 관리자가 Docker 서비스를 효율적이고 안정적으로 구성 및 시작하는 데 필요한 기본 원리와 실용적인 기술을 이해하는 데 도움을 줍니다.
Docker 는 컨테이너화 기술을 사용하여 애플리케이션의 배포, 확장 및 관리를 자동화하는 오픈소스 플랫폼입니다. 개발자는 모든 종속성을 포함한 애플리케이션을 표준화된 단위인 컨테이너에 패키징하여 다양한 컴퓨팅 환경에서 일관되게 실행할 수 있습니다.
| 특징 | 컨테이너 | 가상 머신 |
|---|---|---|
| 자원 사용량 | 경량화 | 무겁 |
| 시작 시간 | 몇 초 | 몇 분 |
| 격리 수준 | 프로세스 수준 | 전체 OS 수준 |
## 패키지 인덱스 업데이트
sudo apt update
## 종속성 설치
sudo apt install apt-transport-https ca-certificates curl software-properties-common
## Docker 공식 GPG 키 추가
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
## 안정적인 리포지토리 설정
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
## Docker Engine 설치
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io
## Docker 버전 확인
docker --version
## Docker Hub에서 이미지 가져오기
docker pull ubuntu:latest
## 로컬 이미지 목록
docker images
## 컨테이너 실행
docker run -it ubuntu:latest /bin/bash
## 실행 중인 컨테이너 목록
docker ps
## 컨테이너 중지
docker stop [CONTAINER_ID]
Docker 는 다음과 같은 분야에서 널리 사용됩니다.
.dockerignore 파일을 사용하십시오.참고: Docker 를 처음 시작하는 경우 LabEx 는 컨테이너화 기술 연습을 위한 훌륭한 실습 환경을 제공합니다.
Docker Compose 는 여러 컨테이너로 구성된 Docker 애플리케이션을 정의하고 실행하는 도구입니다. YAML 파일을 사용하여 애플리케이션의 서비스, 네트워크 및 볼륨을 구성할 수 있습니다.
version: "3.8"
services:
web:
image: nginx:latest
ports:
- "80:80"
database:
image: postgres:13
environment:
POSTGRES_PASSWORD: example
| 섹션 | 목적 | 예시 |
|---|---|---|
| version | Compose 파일 형식 버전 | 3.8 |
| services | 컨테이너 정의 | web, database |
| networks | 사용자 정의 네트워크 생성 | frontend, backend |
| volumes | 지속적인 데이터 저장소 | database_data |
version: "3.8"
services:
## 웹 애플리케이션 서비스
web:
image: nginx:latest
container_name: web-server
ports:
- "8080:80"
volumes:
- ./website:/usr/share/nginx/html
networks:
- web_network
restart: always
## 데이터베이스 서비스
database:
image: postgres:13
container_name: postgres-db
environment:
POSTGRES_DB: myapp
POSTGRES_USER: admin
POSTGRES_PASSWORD: securepassword
volumes:
- postgres_data:/var/lib/postgresql/data
networks:
- web_network
restart: unless-stopped
networks:
web_network:
driver: bridge
volumes:
postgres_data:
## .env 파일 생성
echo "DB_PASSWORD=mysecretpassword" > .env
## docker-compose.yml에서 참조
environment:
- DB_PASSWORD=${DB_PASSWORD}
services:
web:
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost"]
interval: 30s
timeout: 10s
retries: 3
## compose 파일 유효성 검사
docker-compose config
## 서비스 시작
docker-compose up -d
## 서비스 중지
docker-compose down
## 서비스 로그 보기
docker-compose logs web
## 서비스 다시 빌드
docker-compose up -d --build
참고: LabEx 는 이러한 Docker Compose 구성을 효과적으로 연습할 수 있는 대화형 환경을 제공합니다.
| 전략 | 설명 | 사용 사례 |
|---|---|---|
| 단일 호스트 | 한 대의 컴퓨터에 컨테이너 배포 | 개발, 소규모 프로젝트 |
| Swarm 모드 | Docker 의 기본 클러스터링 | 중간 규모 애플리케이션 |
| Kubernetes | 고급 컨테이너 오케스트레이션 | 대규모, 복잡한 배포 |
## 기본 노드에서 Swarm 초기화
docker swarm init --advertise-addr 192.168.1.100
## 워커 노드 참여 토큰 생성
docker swarm join-token worker
## 매니저 노드 참여 토큰 생성
docker swarm join-token manager
version: "3.8"
services:
web:
image: myapp:latest
deploy:
replicas: 3
update_config:
parallelism: 1
delay: 10s
restart_policy:
condition: on-failure
ports:
- "80:80"
networks:
- backend
networks:
backend:
driver: overlay
## 롤링 업데이트로 서비스 배포
docker service create \
--replicas 3 \
--update-parallelism 1 \
--update-delay 10s \
nginx:latest
## 서비스 목록
docker service ls
## 서비스 확장
docker service scale web=5
## 서비스 상태 확인
docker service ps web
## 서비스 로그 보기
docker service logs web
## Docker 콘텐츠 신뢰 설정
export DOCKER_CONTENT_TRUST=1
| 특징 | Docker Swarm | Kubernetes |
|---|---|---|
| 복잡성 | 낮음 | 높음 |
| 설정 어려움 | 쉬움 | 복잡함 |
| 확장성 | 보통 | 광범위 |
| 기본 Docker 통합 | 우수 | 제한적 |
## 로깅 드라이버 구성
docker service create \
--log-driver json-file \
--log-opt max-size=10m \
nginx:latest
참고: LabEx 는 실제 시나리오에서 이러한 배포 기술을 연습할 수 있는 포괄적인 실습 환경을 제공합니다.
Docker 서비스 구성 및 배포 전략을 숙달함으로써 개발자는 더욱 강력하고 확장 가능한 컨테이너화된 애플리케이션을 만들 수 있습니다. 이 튜토리얼은 기본 개념부터 실제 배포 기술까지 Docker 서비스 관리에 대한 필수적인 통찰력을 제공하여, 전문가들이 컨테이너 인프라를 최적화하고 전체 시스템 성능을 향상시킬 수 있도록 지원합니다.