소개
이 포괄적인 Docker 튜토리얼은 개발자 및 시스템 관리자에게 컨테이너 기술을 이해하고 구현하는 실용적인 가이드를 제공합니다. Docker 의 핵심 원리, 아키텍처 및 필수 명령어를 탐색함으로써 학습자는 다양한 컴퓨팅 환경에서 애플리케이션을 효율적으로 패키징, 배포 및 실행하는 데 필요한 기술을 습득하게 됩니다.
이 포괄적인 Docker 튜토리얼은 개발자 및 시스템 관리자에게 컨테이너 기술을 이해하고 구현하는 실용적인 가이드를 제공합니다. Docker 의 핵심 원리, 아키텍처 및 필수 명령어를 탐색함으로써 학습자는 다양한 컴퓨팅 환경에서 애플리케이션을 효율적으로 패키징, 배포 및 실행하는 데 필요한 기술을 습득하게 됩니다.
Docker 는 소프트웨어 패키징 및 배포를 혁신하는 강력한 컨테이너화 기술입니다. 개발자는 다양한 컴퓨팅 환경에서 애플리케이션을 일관되게 생성, 배포 및 실행할 수 있도록 지원합니다.
컨테이너화는 애플리케이션과 모든 종속성을 함께 패키징하여 다양한 플랫폼에서 일관된 실행을 보장합니다. 기존 가상 머신과 달리 컨테이너는 호스트 시스템의 커널을 공유하여 가볍고 효율적입니다.
| 구성 요소 | 설명 |
|---|---|
| Docker 데몬 | 컨테이너를 관리하는 백그라운드 서비스 |
| Docker 클라이언트 | Docker 와 상호 작용하기 위한 명령줄 인터페이스 |
| Docker 레지스트리 | Docker 이미지를 저장하고 배포하는 플랫폼 |
## 패키지 인덱스 업데이트
sudo apt update
## 필요한 종속성 설치
sudo apt install apt-transport-https ca-certificates curl software-properties-common
## Docker의 공식 GPG 키 추가
curl -fsSL | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
## Docker 리포지토리 설정
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
## Docker 엔진 설치
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 이미지는 Docker 컨테이너를 생성하기 위한 명령어 집합을 담고 있는 읽기 전용 템플릿입니다. 컨테이너화된 애플리케이션의 기반이 되며, 필요한 모든 종속성과 구성을 패키징합니다.
Dockerfile 은 Docker 이미지를 조립하는 데 사용되는 명령어가 포함된 텍스트 문서입니다. 이미지 생성 및 구성에 체계적인 접근 방식을 제공합니다.
| 지시어 | 목적 |
|---|---|
| FROM | 기본 이미지 지정 |
| RUN | 이미지 빌드 중 명령어 실행 |
| COPY | 파일을 이미지에 복사 |
| WORKDIR | 작업 디렉토리 설정 |
| EXPOSE | 네트워크 포트 선언 |
| CMD | 기본 컨테이너 실행 명령어 정의 |
## 공식 Ubuntu 기본 이미지 사용
FROM ubuntu:22.04
## 시스템 패키지 업데이트
RUN apt-get update && apt-get upgrade -y
## Python 설치
RUN apt-get install -y python3 python3-pip
## 작업 디렉토리 설정
WORKDIR /app
## 애플리케이션 파일 복사
COPY . /app
## 종속성 설치
RUN pip3 install -r requirements.txt
## 기본 명령 지정
CMD ["python3", "app.py"]
## Dockerfile이 있는 디렉토리로 이동
cd /path/to/project
## Docker 이미지 빌드
docker build -t myapp:v1 .
## 생성된 이미지 확인
docker images
## 로컬 이미지 목록
docker images
## 특정 이미지 삭제
docker rmi myapp:v1
## 이미지 태그
docker tag myapp:v1 myregistry/myapp:latest
## 레지스트리에 이미지 푸시
docker push myregistry/myapp:latest
컨테이너 배포는 Docker 컨테이너의 생성부터 종료까지 전체 수명주기를 관리하여 효율적이고 안정적인 애플리케이션 실행을 보장하는 작업입니다.
| 전략 | 설명 |
|---|---|
| 단일 컨테이너 | 개별 컨테이너의 기본 배포 |
| 다중 컨테이너 | 상호 연결된 컨테이너 배포 |
| 확장 | 컨테이너 인스턴스의 수평 확장 |
| 롤링 업데이트 | 점진적인 컨테이너 교체 |
## 간단한 컨테이너 실행
docker run -d --name web-app nginx:latest
## 포트 매핑으로 컨테이너 실행
docker run -p 8080:80 -d nginx:latest
## 환경 변수로 컨테이너 실행
docker run -e DATABASE_URL=postgres://user:pass@host/db -d myapp:v1
## 컨테이너 리소스 제한
docker run --cpus=2 --memory=1g nginx:latest
## 볼륨 마운팅
docker run -v /host/path:/container/path nginx:latest
## 네트워크 구성
docker run --network=custom_network nginx:latest
## 실행 중인 컨테이너 목록
docker ps
## 모든 컨테이너 목록
docker ps -a
## 컨테이너 중지
docker stop web-app
## 컨테이너 제거
docker rm web-app
## 컨테이너 재시작
docker restart web-app
## Docker Compose 배포
docker-compose up -d
## 컨테이너 확장
docker-compose scale web=3
## 서비스 상태 확인
docker-compose ps
## 실시간 컨테이너 리소스 사용량
docker stats
## 컨테이너 로그
docker logs web-app
## 컨테이너 세부 정보 확인
docker inspect web-app
Docker 는 소프트웨어 개발을 혁신하여 가볍고 휴대 가능한 컨테이너화 솔루션을 제공하여 일관된 애플리케이션 배포를 보장합니다. Docker 의 기본 개념, 설치 프로세스 및 주요 명령어를 숙달함으로써 전문가들은 개발 워크플로우를 간소화하고 시스템 안정성을 향상시키며 다양한 플랫폼 및 클라우드 환경에서 더 나은 인프라 유연성을 달성할 수 있습니다.