Cómo reemplazar Docker con Podman en una Mac, revisado

En marzo, expliqué cómo reemplacé Docker con Podman en una Mac usando VirtualBox y Vagrant después de una versión anterior de máquina podman se ha vuelto obsoleto. Ese mismo mes, una nueva versión de podman machine fue publicado lo que prácticamente hizo obsoleto mi artículo y causó un un poco de confusión.

Utilizando el podman machine La funcionalidad del comando es mucho más simple ahora, como explica Brent Baude en Cómo se ejecuta Podman en Mac y otras preguntas frecuentes sobre contenedores. Como estaba dejando mi configuración de VirtualBox / Vagrant, quería volver a este tema en caso de que su diseño sea similar al mío. Estos son algunos consejos que encontré al cambiar a podman machine; ¡Espero que al compartirlos, ayude a algunas personas!

Índice

    De vagabundo a máquina podman

    Voy a suponer que tienes podman instalado usando cerveza casera. Lo primero que debe hacer es obtener la última versión de Podman ejecutando:

    $ brew upgrade podman

    Si eres como yo y quieres resultados rápidos, ejecuta estos comandos después de actualizar:

    $ podman machine init
    $ podman machine start

    Cuando ejecuté esto, el init comando funcionó a las mil maravillas, pero el start el pedido no quedó contento y me dijo:

    Error: unable to start host networking: "could not find "gvproxy" in one of [/usr/local/opt/podman/libexec /opt/homebrew/bin /opt/homebrew/opt/podman/libexec /usr/local/bin /usr/local/libexec/podman /usr/local/lib/podman /usr/libexec/podman /usr/lib/podman]"

    Después de algunas investigaciones en Internet, encontré una recomendación para agregar la siguiente línea al ~/.config/containers/containers.conf archivar:

    helper_binaries_dir=["/usr/local/Cellar/podman/3.4.1/bin","/usr/local/Cellar/podman/3.4.1/libexec"]

    OBSERVACIÓN: Este es un problema bastante reciente y se puede solucionar en las versiones más recientes de Podman. Como puede ver, estoy usando 3.4.1. Esta versión definitivamente resolvió el gvproxy error, pero aquí es donde mi configuración de Vagrant me hizo tropezar. vuelvo a ejecutar el podman machine start comando, pero todavía no estaba contento, diciendo que no podía conectarse debido a un failed sshClient Error. Decidí mirar mi antigua conexión de Vagrant ejecutando:

    $ podman system connection list

    Noté que la conexión Vagrant todavía existe como conexión predeterminada. Rápidamente cambié el valor predeterminado y eliminé la conexión de Vagrant, pero sigo teniendo el mismo error. Así que ejecuté el siguiente comando para obtener más información de depuración:

    $ podman --log-level=debug ps
    INFO[0000] podman filtering at log level debug
    DEBU[0000] Called ps.PersistentPreRunE(podman --log-level=debug ps)
    DEBU[0000] SSH Ident Key "/Users/dmeurer/Dev/images/podman/.vagrant/machines/default/virtualbox/private_key" SHA256:EhLJssA0acBO7LQVx8UrHzQPeVXB2gwn+a+wXdOaCKY ssh-rsa
    DEBU[0000] Found SSH_AUTH_SOCK "/private/tmp/com.apple.launchd.b6hyl78H5X/Listeners", ssh-agent signer(s) enabled
    Cannot connect to Podman. Please verify your connection to the Linux system using `podman system connection list`, or try `podman machine init` and `podman machine start` to manage a new Linux VM
    
    Error: unable to connect to Podman. failed to create sshClient: Connection to bastion host (ssh://[email protected]:2222/run/podman/podman.sock) failed.: dial tcp 127.0.0.1:2222: connect: connection refused

    Como no puedo recordar lo que desayuné hoy, y mucho menos algo que hice hace meses, volví a mi artículo anterior para ver si algo de lo que hice podría obligar a Podman a usar esta clave privada de Vagrant. Bueno, por supuesto que fue en el paso 6! Las variables globales siempre le dijeron a Podman que usara la configuración de la clave Vagrant SSH. Todo lo que tenía que hacer era neutralizar el CONTENEDOR_HOST y CONTENEDOR_SSHKEY mis lineas ~/.zshrc archivo, y podman machine start funcionó como se anuncia.

    Conviértalo en una aplicación de macOS

    Ahora que podman machine funcionó muy bien en mi Mac, quería asegurarme de que la aplicación macOS Seals que usé en el artículo anterior funcionaba. En este artículo, creé un script de shell Bash llamado pman para iniciar y detener rápidamente mi configuración de VirtualBox y Vagrant, y creé una aplicación llamada Seals para facilitar la ejecución del script. El nuevo pman el script necesitaba algunos ajustes para usarlo podman machine:

    #!/bin/bash
    
    ACTION=$1
    
    case $ACTION in
      "down")
        echo "Shutting down podman machine"
        podman machine stop
        ;;
    
      "up")
        echo "STARTING podman machine"
        podman machine start
        ;;
    
      "init")
        echo "CREATING a new podman machine"
        podman machine init
        ;;
    esac

    Luego probé mi aplicación macOS Seals y obtuve una interesante podman not found Error. Así que abrí Automator en mi Mac, elegí Abrir un documento existente...y abrió la aplicación Seals.

    [ Learn more about the Red Hat OpenShift Container Platform. ]

    Es posible que no necesite hacer esto dependiendo de la ubicación de su ejecutable de Podman. Creé un enlace simbólico de Podman en un directorio bin local, así que tuve que jugar con la primera línea de exportación para asegurarme de que encontrara mi ejecutable de Podman.

    Modificó la aplicación Seals para encontrar el ejecutable Podman. (Dave Muerer, CC BY-SA 4.0)

    Deberá actualizar las rutas en la captura de pantalla anterior a donde guardó y nombró el script Bash. Una vez que encontré el camino correcto, mi aplicación Seals funcionó muy bien.

     

    La ventana Obtener información del sello. (Dave Muerer, CC BY-SA 4.0)

    En caso de que se pregunte cómo adjunté el logotipo de Podman a mi aplicación macOS, este es el proceso. Encontré la logotipo de podman y creó una imagen PNG de 128x128 con GIMP para usar como ícono de aplicación con estos pasos:

    1. Abra el PNG de 128x128 en la vista previa y haga clic en Editar> Copiar.
    2. Haga clic con el botón derecho en la nueva aplicación y luego haga clic en Obtener información.
    3. Seleccione el icono en la parte superior izquierda y pegue el contenido del portapapeles.

    Ahora puedes usar Alfredo o Spotlight para iniciar rápidamente Podman y liberar valiosos milisegundos de su jornada laboral para concentrarse en las cosas que importan... ¡como un almuerzo matutino!

    Buscando Focas con Alfred. (Dave Muerer, CC BY-SA 4.0)

    Resumen

    Espero que esto ayude a las personas que buscan una manera fácil de iniciar Podman en macOS o que usan una configuración de Vagrant similar a la que he documentado. La razón principal por la que revisé este tema fue que las actualizaciones de Podman hicieron obsoleto mi artículo anterior, y ahora es mucho más fácil usar Podman en un macOS gracias a la máquina podman. Ya no necesita VirtualBox y Vagrant, ¡solo Podman! ¡¡Feliz contenedorización!!

    Artículos de interés

    Subir