I. 개요 및 공통 개념
1. containerd의 역할 이해 (Container Runtime)
containerd는 컨테이너 생명주기를 관리하는 핵심 엔진입니다.- 사용자가
docker run을 실행할 때, 실제로는 Docker API가 요청을 받아containerd에게 전달하고,containerd가 최종적으로runc같은 낮은 레벨의 런타임에게 작업을 위임하여 컨테이너가 실행됩니다. - 장점: 오버헤드가 낮고, 안정성이 높아 운영 환경(Production)에서 사용됩니다.
2. 핵심 도구 이해
| 도구 | 역할 | 목적 |
|---|---|---|
containerd |
핵심 엔진 | 컨테이너의 생명주기 관리 (저장소, 네트워크, 프로세스). |
skopeo |
이미지 관리 유틸리티 | 원격 레지스트리(Docker Hub 등)에서 이미지를 로컬로 가져오거나, 이미지를 검사/복사할 때 사용 (매우 유용). |
ctr |
CLI (Control Tool) | containerd의 내부 API를 직접 다루는 명령어 라인 도구. |
3. ⚠️ 중요 전제 조건 (필독)
- WSL2 사용 (Windows 사용자): Windows 환경에서 Linux 컨테이너를 사용하려면 WSL2를 설치하고 활성화해야 합니다.
- Root 권한: 대부분의 컨테이너 관련 작업은 높은 시스템 권한이 필요할 수 있습니다.
II. Red Hat Linux 환경 (RHEL/Fedora 등)
🚀 1. 설치 및 설정
# 1. containerd가 설치되어 있는지 확인하고 설치
sudo dnf install containerd.io
# 2. 서비스 활성화 및 시작
sudo systemctl enable containerd
sudo systemctl start containerd
# 3. (필요시) 네트워크 관련 설정 확인 (CRI-O 등 사용 시)
⚙️ 2. Red Hat 환경에서의 운영 예시 (표준)
Red Hat 기반 시스템은 containerd 사용이 가장 표준적입니다.
# (생략) 이미지 풀링 및 컨테이너 실행 예시
# 예: nginx 이미지를 다운받고 실행하는 가장 기본적인 방법
sudo ctr image pull docker.io/library/nginx:latest # containerd CLI 사용
sudo ctr run docker.io/library/nginx:latest
III. Windows 환경 (WSL2 사용)
Windows에서는 WSL2를 통해 리눅스 환경을 구성하고, 리눅스 환경에서 위 Red Hat 가이드와 동일하게 작업하는 것을 권장합니다.
💻 1. WSL2 설정
# 1. WSL2 설치 (Administrator 권한의 PowerShell에서 실행)
wsl --install
# 2. Linux 배포판 설치 (Ubuntu 등)
# 3. 배포판 내부로 진입하여 Red Hat 가이드와 동일하게 작업 시작
⚙️ 2. Windows (WSL2) 운영 예시
WSL2 내부에서 다음과 같이 리눅스 명령어를 사용합니다.
# Ubuntu 내부 터미널에서 실행 가정
sudo dnf install containerd.io
# ... (나머지 명령어는 Red Hat 섹션과 동일)
IV. 공통 운영 절차 (실제 컨테이너 사용 예시)

환경 설정이 완료되었다고 가정하고, 모든 시스템에서 공통적으로 사용할 수 있는 작업 흐름입니다.
🧱 1. 이미지 다운로드 (Pull)
# Docker Hub에서 nginx 최신 버전을 로컬로 가져옵니다.
# (사용하는 CLI에 따라 'docker pull' 또는 'ctr image pull' 사용)
sudo docker pull nginx:latest
🚀 2. 컨테이너 실행 (Run)
# -d : 백그라운드 실행
# -p 8080:80 : 호스트 포트 8080을 컨테이너 내부 80 포트에 연결
sudo docker run -d --name my_webserver -p 8080:80 nginx:latest
🔍 3. 동작 확인 및 로그 확인
# 컨테이너가 정상적으로 실행 중인지 확인
sudo docker ps
# 컨테이너의 로그를 실시간으로 확인
sudo docker logs my_webserver
# 컨테이너 중지
sudo docker stop my_webserver
# 컨테이너 삭제
sudo docker rm my_webserver