docker-compose in podman

진웅·2025년 8월 19일

RHEL에서 Podman이 이미 설치된 상황에서 docker-compose를 설치하는 방법을 안내해드리겠습니다.

방법 1: Podman과 Docker Compose 호환성 설정 (권장)

1단계: Podman-Docker 호환성 패키지 설치

# RHEL 9
sudo dnf install podman-docker

# 이 패키지는 docker 명령을 podman으로 리다이렉트해줍니다

2단계: Docker Compose 설치

옵션 A: 바이너리 직접 설치

# Docker Compose 최신 버전 다운로드
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# 실행 권한 부여
sudo chmod +x /usr/local/bin/docker-compose

# 심볼릭 링크 생성 (선택사항)
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

옵션 B: pip으로 설치

# Python pip 설치
sudo dnf install python3-pip

# Docker Compose 설치
pip3 install docker-compose

# 또는 사용자 로컬에 설치
pip3 install --user docker-compose

3단계: Podman Socket 활성화

# 사용자 레벨 Podman 소켓 활성화
systemctl --user enable --now podman.socket

# 시스템 레벨 Podman 소켓 활성화 (선택사항)
sudo systemctl enable --now podman.socket

4단계: 환경변수 설정

# 사용자 레벨 소켓 사용
export DOCKER_HOST=unix:///run/user/$UID/podman/podman.sock

# 시스템 레벨 소켓 사용
export DOCKER_HOST=unix:///run/podman/podman.sock

# 영구적으로 설정하려면 ~/.bashrc에 추가
echo 'export DOCKER_HOST=unix:///run/user/$UID/podman/podman.sock' >> ~/.bashrc
source ~/.bashrc

방법 2: Podman Compose 사용 (Podman 4.1+)

Podman Compose 설치

# Podman 버전 확인
podman --version

# Podman 4.1 이상이면 내장 지원
# docker-compose 대신 podman-compose 사용
sudo dnf install podman-compose

# 또는 pip로 설치
pip3 install podman-compose

Podman Compose 사용법

# docker-compose 대신 podman-compose 사용
podman-compose up -d
podman-compose down
podman-compose ps

방법 3: Docker Compose와 Podman 완전 호환 설정

1단계: Docker CLI 에뮬레이션 설정

# podman-docker 패키지가 없다면 수동으로 설정
sudo tee /usr/local/bin/docker << 'EOF'
#!/bin/bash
exec podman "$@"
EOF

sudo chmod +x /usr/local/bin/docker

2단계: Docker Compose 설치 및 설정

# Docker Compose 설치 (위의 방법 1의 옵션 A와 동일)
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

# Podman 소켓 설정
systemctl --user enable --now podman.socket
export DOCKER_HOST=unix:///run/user/$UID/podman/podman.sock

Harbor 설치를 위한 설정

Harbor의 docker-compose.yml 수정 없이 사용

# Harbor 디렉토리에서
cd /path/to/harbor

# Podman 소켓 확인
ls -la /run/user/$UID/podman/podman.sock

# Docker Compose로 Harbor 실행
export DOCKER_HOST=unix:///run/user/$UID/podman/podman.sock
docker-compose up -d

# 또는 sudo로 시스템 소켓 사용
sudo DOCKER_HOST=unix:///run/podman/podman.sock docker-compose up -d

설치 확인 및 테스트

1단계: 버전 확인

# Docker Compose 버전 확인
docker-compose --version

# Podman 버전 확인
podman --version

# Docker 명령이 Podman으로 연결되는지 확인
docker --version

2단계: 테스트 실행

# 테스트용 docker-compose.yml 생성
cat > test-compose.yml << 'EOF'
version: '3'
services:
  test:
    image: nginx:latest
    ports:
      - "8080:80"
EOF

# 테스트 실행
DOCKER_HOST=unix:///run/user/$UID/podman/podman.sock docker-compose -f test-compose.yml up -d

# 확인
curl http://localhost:8080

# 정리
docker-compose -f test-compose.yml down

권한 및 보안 설정

Rootless 모드 설정

# 사용자가 rootless 모드로 Podman 사용
podman system migrate

# 서브UID/서브GID 설정 확인
cat /etc/subuid
cat /etc/subgid

# 필요시 추가
echo "$USER:100000:65536" | sudo tee -a /etc/subuid
echo "$USER:100000:65536" | sudo tee -a /etc/subgid

문제 해결

소켓 연결 문제

# 소켓 상태 확인
systemctl --user status podman.socket

# 소켓 재시작
systemctl --user restart podman.socket

# 권한 확인
ls -la /run/user/$UID/podman/podman.sock

네트워크 문제

# Podman 네트워크 확인
podman network ls

# 기본 네트워크 재생성 (필요시)
podman network rm podman-default-kube-network
podman network create podman-default-kube-network

이제 RHEL의 Podman 환경에서 docker-compose를 사용할 수 있습니다! Harbor 설치시 DOCKER_HOST 환경변수만 올바르게 설정하면 정상적으로 작동할 것입니다.

혹시 Harbor 설치 과정에서 문제가 발생하면 알려주세요!

profile
bytebliss

0개의 댓글