🐳 Docker 없이 containerd 사용 가이드 (OS별 분리)

 

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. 공통 운영 절차 (실제 컨테이너 사용 예시)

🐳 Docker 없이 containerd 사용 가이드 (OS별 분리)

환경 설정이 완료되었다고 가정하고, 모든 시스템에서 공통적으로 사용할 수 있는 작업 흐름입니다.

🧱 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