Podman con docker-compose en MacOS

Podman con docker-compose en MacOS

Podman es una alternativa a Docker Desktop en MacOS

Obtener podman instalarlo y comenzar es superfácil.
Solo usaremos brew para instalarlo.

brew install podman

Ahora como podman usa una VM como cliente Docker en MacOS necesitamos crearla e iniciarla

podman machine init
podman machine start

Ahora estamos listos.

Si queremos podemos crear un symlink para ejecutar podman con el comando "docker"

ln -s /usr/local/bin/podman /usr/local/bin/docker

Ahora la mayoría de los comandos en podman y docker son los mismos, así que puede probar podman images y debería ver una lista de imágenes.
De lo contrario, puede usar el comando podman --help y se mostrará toda la ayuda que necesita.

Para obtener docker-compose sin el cliente de docker en MacOS. Puedes instalarlo usando el comando brew.

brew install docker-compose

Cuando esto termine ahora podrás obtener la habilidad de usar docker-compose con podman

En MacOS el proyecto podman no expone el podman.socket que es similar al, docker.socket. Para hacer que docker-compose funcione necesitamos exponer el socker.

Para hacer que el socket funcione necesitamos correr los siguientes comandos.

Primero necesitamos encontrar el puerto expuesto por la VM.

podman system connection ls

Una vez que lo tengamos tenemos que copiar el puerto y crear una conexión a él.

ssh -fnNT -L/tmp/podman.sock:/run/user/1000/podman/podman.sock -i ~/.ssh/podman-machine-default ssh://core@localhost:<puerto al socker> -o StreamLocalBindUnlink=yes

export DOCKER_HOST='unix:///tmp/podman.sock'

Segundo, necesitamos exponer la variable de entorno DOCKER_HOST ya que esta es usada por docker-compose.

Tenga en cuenta que si la conexión se desconecta, debe eliminar/sobrescribir /tmp/podman.socket para ejecutar el comando ssh de nuevo.

script para copiar y pegar

brew install podman

podman machine init

podman machine start

ln -s /usr/local/bin/podman /usr/local/bin/docker

brew install docker-compose

sshPort=$(podman system connection ls --format="{{ .URI }}"| head -1 | awk -F'[^0-9]+' '{ print $2 }')

ssh -fnNT -L/tmp/podman.sock:/run/user/1000/podman/podman.sock -i ~/.ssh/podman-machine-default ssh://core@localhost:$sshPort -o StreamLocalBindUnlink=yes

export DOCKER_HOST='unix:///tmp/podman.sock'

Fuente:

https://gist.github.com/kaaquist/dab64aeb52a815b935b11c86202761a3#file-podman_macos-md