Podman Compose 설치 방법

Composite·2023년 5월 3일
0

Docker, 엄밀히 말하면 데스크탑용 어플리케이션이 상업용으로 유료화된 지 좀 됐다.
내가 글 쓴지도 좀 됐다. 사실 글 몇개 작성했는데 쓰고나니 노잼이라 거르고 거르다 이거라도 적는 거다.

회사에서 podman 쓰는 사례가 눈에 띄기 시작한다.
아무래도 Docker Desktop 유료화에 대한 부담이 애꿏은 Engine 까지 반영된 것.
하지만 그것보다 더 매력적인 포인트는 바로 rootless 컨테이너가 아닌가 싶다.

그래서 오늘은 podman compose 설치 방법을 남기도록 하겠다.
물론 원글 배끼고 말이다. 도움 많이 되어 영어울렁증을 위해 내가 친히 한글로 남기도록 하겠다.

Podman 설치

뭐 더 설명할 게 있나? 네가 구동 중인 리눅스나 맥 환경에서 제공하는 패키지 관리자를 사용해서 설치하는 것이 가장 간단하다.
예를 들면,

# 데비안 예시
$ sudo apt install podman -y
# RHEL 계열 예시
$ sudo yum install podman -y
# (또는)
$ sudo dpt install podman -y
# 맥 예시
$ brew install podman
# ... 등등

근데, 어젯밤에 Ubuntu 22.x 계열에서 황당한 광경을 목격했는데, 현재 podman의 최신 버전은 4.2 인데 우분투 22 에서는 유별나게 3.4가 깔린다. 게다가 우분투 커뮤니티에서 묵살(?)하고 있기에 무슨일인지 아는 사람 댓글바람.

설치 확인이야 별거 없다.

$ podman -v

이 명령어 쳐서 버전 나오면 된다. 정 못믿겠다면 예제 컨테이너 하나 설치해도 무방하다.

$ podman run quay.io/podman/hello

Podman Compose 설치

Podman Compose 는 Docker Compose 의 Podman 버전 그 이상 그 이하도 아니다.
얘는 파이썬으로 만들었는데, 보통 리눅스에서는 파이썬 3.9 버전 깔려 있을 테니 이 버전에서 머물러도 된다.
혹시라도 pip 안 깔려 있으면 pip 패키지 설치를 잊지 말자.

# 데비안 예시
$ sudo apt install python3-pip -y
# RHEL 계열 예시
$ sudo yum install python3-pip -y
# (또는)
$ sudo dpt install python3-pip -y
# 맥 예시
$ brew install python3-pip
# ... 등등

이미 있다면 업글 하고,

$ sudo -H pip3 install --upgrade pip

그리고 설치하자.

$ sudo pip3 install podman-compose

확인 방법? 버전 확인!

$ podman-compose version

Docker Compose 설치

Podman 4.1 이상부터는 Docker Compose 2.2 와의 호환성을 제공하니, Docker Compose 는 너의 Podman 버전이 4.1 이상이면 2.2 이상 설치를 추천하고, 만약 아니라면, Docker Compose 1 버전을 찾아 설치해야 한다. 방법은 아마 똑같을 것이다.

먼저 Podman 을 Docker 로 둔갑시키는 패키지를 설치한다.

# 데비안 예시
$ sudo apt install podman-docker -y
# RHEL 계열 예시
$ sudo yum install podman-docker -y
# (또는)
$ sudo dpt install podman-docker -y
# 맥 예시
$ brew install podman-docker
# ... 등등

그런 다음, Docker Compose를 설치할 건데, 다행히도 얘네들이 단독 실행 파일로 제공하기 때문에, 다운받아 bin 폴더에 적당히 담궈두면 된다.

$ sudo curl -SL https://github.com/docker/compose/releases/download/v2.17.2/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose

담궈 놨으면 실행되게 권한 주는 것도 잊지 말고.

$ sudo chmod +x /usr/local/bin/docker-compose

설치 확인 하면 역시 버전 확인만한 게 없다.

$ docker-compose version

Podman Socket 으로 Docker 흉내

Podman 쓰는 매력적인 이유를 꼽자면, 단연 데몬 없이도 컨테이너 실행을 꼽을 것이다.
하지만 Docker Compose 와 Podman Compose 호환성이 없는 경우가 꽤 많기 때문에 결국 Docker 흉내를 내야 하는 상황.
하지만 Podman 은 센스있게 소켓 데몬으로 도커를 흉내낼 수 있는 환경을 제공한다.

$ sudo systemctl enable --now podman.socket
# 또는
$ sudo service podman.socket start

서비스를 시작하면 되고,

$ sudo systemctl status podman.socket
# 또는
$ sudo service podman.socket status

서비스가 잘 동작하는지 확인하면 된다.

Compose 테스트

자, 준비는 끝났으니 이제 동작을 시험해 볼 시간!

대충 폴더 만들고 거기에 컴포즈 파일을 작성해 보자.

mkdir ~/docker/echo
cd ~/docker/echo
cat >> docker-compose.yaml << EOF
---
version: '3' 
services: 
  web: 
    image: k8s.gcr.io/echoserver:1.4
    ports:
        - "${HOST_PORT:-8080}:8080" 
EOF

그리고 실행해 볼까?

podman-compose up -d

데몬을 실행했으니 에코 서버 테스트도 해야지!

curl -X POST -d "foobar" http://localhost:8080/; echo

네가 보낸 메시지가 보이면 성공! 크로스 체크를 위해 로그도 확인해 보자.

podman-compose logs

대충 니가 요청한 내역이 뜨면 성공이고. 이번엔 프로세스도 확인해 보자.

podman-compose ps

대충 에코 서버 프로세스 뜨면 된다.

Podman compose 해봤으면 Docker compose 도 테스트 해보자. 테스트 방법은 명령어를 podman-compose 에서 docker-compose 로 바꾸면 된다. 출력 결과는 동일하니 동일한 방법으로 테슽 해보자.

축하한다. 당신은 podman 으로 이것저것 다 해보았다. 난 이걸 WSL 으로 삽질했다. 야 너두?

끗.

profile
지옥에서 온 개발자

0개의 댓글