RHEL에서 Podman이 이미 설치된 상황에서 docker-compose를 설치하는 방법을 안내해드리겠습니다.
# RHEL 9
sudo dnf install podman-docker
# 이 패키지는 docker 명령을 podman으로 리다이렉트해줍니다
# 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
# Python pip 설치
sudo dnf install python3-pip
# Docker Compose 설치
pip3 install docker-compose
# 또는 사용자 로컬에 설치
pip3 install --user docker-compose
# 사용자 레벨 Podman 소켓 활성화
systemctl --user enable --now podman.socket
# 시스템 레벨 Podman 소켓 활성화 (선택사항)
sudo systemctl enable --now podman.socket
# 사용자 레벨 소켓 사용
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
# Podman 버전 확인
podman --version
# Podman 4.1 이상이면 내장 지원
# docker-compose 대신 podman-compose 사용
sudo dnf install podman-compose
# 또는 pip로 설치
pip3 install podman-compose
# docker-compose 대신 podman-compose 사용
podman-compose up -d
podman-compose down
podman-compose ps
# podman-docker 패키지가 없다면 수동으로 설정
sudo tee /usr/local/bin/docker << 'EOF'
#!/bin/bash
exec podman "$@"
EOF
sudo chmod +x /usr/local/bin/docker
# 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 디렉토리에서
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
# Docker Compose 버전 확인
docker-compose --version
# Podman 버전 확인
podman --version
# Docker 명령이 Podman으로 연결되는지 확인
docker --version
# 테스트용 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 모드로 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 설치 과정에서 문제가 발생하면 알려주세요!