도커 대신 Podman 사용하기

도커 데스크탑 대신 Podman을 쓰는 이유

도커 데스크탑 같은 경우 상업적인 목적으로 사용하려면 유료 버전을 구매해야합니다. 그래서 저는 도커 데스크탑 대신 Podman을 사용합니다.

Podman 설치

설치 도구가 잘 되아있어서 대부분의 경우 한 줄로 설치가 가능합니다.

우분투

sudo apt-get -y install podman

CentOS

sudo yum -y install podman

Alpine Linux

sudo apk add podman

mac OS

brew install podman

Podman 구성

처음엔 Podman 데스크탑을 사용했는데요, 버그가 있는 건지 커맨드라인에서 쓸 때 잘 안되더라구요. 그래서 Podman 데스크탑으로 생성한 machine을 지운 뒤 CLI를 이용해서 다시 초기화해주었습니다. 그러니까 잘 돌아가네요.

podman machine init

이게 끝입니다. 그런데 docker를 사용하려면 도커를 켜야하듯이 Podman도 사용하려면

podman machine start

을 해줘야합니다.

docker compose => podman compose

전 프로젝트별 개발 환경을 docker compose로 관리하는데요, docker와 docker compose는 서로 다른 프로젝트기 때문에 podman과 podman compose도 별개 프로젝트입니다. 별개 프로젝트이므로 별도로 설치해야합니다. 설치는 매우 간단합니다.

pip3 install podman-compose

호환성 이슈

아무래도 docker가 아니다보니 호환성 문제가 있습니다.

vscode devcontainer

별도 설정을 하지 않으면 vscode의 devcontainer가 안 돌아갑니다. 제가 podman이나 docker를 사용하는 목적이 devcontainer였어서 상당히 크리티컬한 이슈였는데요, 다행히도 해결 방법이 있었습니다.

vscode의 settings.json

{
  "remote.containers.dockerPath": "podman-devcontainer-wrapper"
}

을 추가하시고, devcontainer.json

{
  "remoteUser": "vscode",
  "containerUser": "vscode"
}

추가하신 뒤, podman-devcontainer-wrapper라는 실행 파일을

BUILDAH_FORMAT=docker \
PODMAN_USERNS=keep-id \
podman "$@"

이렇게 만들어주시면 됩니다.


Edit: https://twitter.com/ian_ilminMoon/status/1655094135681073154 를 반영해서 도커가 아닌 도커 데스크탑이 유료인 것으로 수정했습니다.