Podman y Podman Desktop: Alternativas a Docker y Docker Desktop

Publicado por Rodrigo dos Santos Mendes el

Docker revolucionó la forma en que empaquetamos y ejecutamos aplicaciones en contenedores, convirtiéndose en una herramienta fundamental en el desarrollo y despliegue de software. Sin embargo, a medida que el ecosistema de contenedores evolucionó, surgieron alternativas notables, como Podman y Podman Desktop.

Contexto

Docker dominó el mercado de contenedores con su simplicidad y flexibilidad. Sin embargo, surgieron preocupaciones sobre la seguridad y eficiencia debido a su arquitectura monolítica y el uso de un daemon. Podman emerge como una alternativa al proporcionar contenedores sin necesidad de un daemon en funcionamiento, lo que los hace más seguros y eficientes.

Docker Desktop ofrece una solución conveniente para desarrolladores en sistemas MacOS y Windows, pero es una herramienta pesada y limitada. Por otro lado, Podman Desktop ofrece una alternativa más ligera y versátil.

Objetivo

El propósito de usar Podman y Podman Desktop es mejorar la eficiencia, la seguridad y la flexibilidad en el desarrollo y la gestión de contenedores. Estas alternativas buscan abordar los desafíos asociados con Docker y Docker Desktop al ofrecer un enfoque más ágil y efectivo.

Escenario

Si bien nos enfocamos en el sistema operativo MacOS, los procedimientos descritos aquí pueden adaptarse a otros sistemas operativos consultando la documentación oficial correspondiente.

Tecnologías Involucradas

Podman

Podman es un gestor de contenedores de código abierto que comparte muchas similitudes con Docker pero se destaca en varios aspectos:

  • Contenedores sin daemon: Podman no requiere un daemon en ejecución, lo que lo hace más seguro y eficiente.
  • Compatibilidad con Docker: Admite comandos e imágenes de Docker, facilitando la transición.
  • Contenedores sin privilegios: Permite ejecutar contenedores sin privilegios, mejorando la seguridad.
  • Creación y gestión de imágenes: Ofrece capacidades similares a las herramientas de creación de imágenes de Docker.
  • Compatibilidad con Kubernetes: Puede utilizarse como tiempo de ejecución alternativo con Kubernetes.

Podman Desktop

Podman Desktop es una alternativa a Docker Desktop que proporciona una experiencia de desarrollo más ágil y eficiente en sistemas MacOS.

Procedimientos

Dependencias

Antes de instalar Podman y Podman Desktop, es necesario tener instalado Homebrew, una herramienta de gestión de paquetes para MacOS. Asegúrese de tenerlo instalado antes de continuar.

Para instalar Homebrew, siga los siguientes pasos:

  1. Abra Terminal en su Mac.
  2. Pegue el siguiente comando y presione Enter:
  3. El script explicará lo que hará y se detendrá antes de tomar medidas. Siga las instrucciones en pantalla. Ejemplo de la ejecución en la consola
bash-3.2$ /bin/bash -c "$(curl -fsSL <https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh>)"
==> Checking for `sudo` access (which may request your password)...
Password:
==> This script will install:
/usr/local/bin/brew
/usr/local/share/doc/homebrew
/usr/local/share/man/man1/brew.1
/usr/local/share/zsh/site-functions/_brew
/usr/local/etc/bash_completion.d/brew
/usr/local/Homebrew
==> The following existing directories will be made group writable:
/usr/local/bin/brew
==> The following existing directories will be made writable by user only:
/usr/local/share/zsh
/usr/local/share/zsh/site-functions
==> The following existing directories will have their owner set to app:
/usr/local/bin/brew
/usr/local/share/zsh
/usr/local/share/zsh/site-functions
Press RETURN to continue or any other key to abort:
==> /usr/bin/sudo /bin/chmod u+rwx /usr/local/bin/brew /usr/local/share/zsh /usr/local/share/zsh/site-functions
==> /usr/bin/sudo /bin/chmod g+rwx /usr/local/bin/brew
==> /usr/bin/sudo /bin/chmod go-w /usr/local/share/zsh /usr/local/share/zsh/site-functions
==> /usr/bin/sudo /usr/sbin/chown app /usr/local/bin/brew /usr/local/share/zsh /usr/local/share/zsh/site-functions
==> /usr/bin/sudo /usr/sbin/chown -R app:admin /usr/local/Homebrew
==> Downloading and installing Homebrew...
remote: Enumerating objects: 55858, done.
remote: Counting objects: 100% (11560/11560), done.
remote: Total 55858 (delta 11559), reused 11560 (delta 11559), pack-reused 44298
Receiving objects: 100% (55858/55858), 19.38 MiB | 21.83 MiB/s, done.
Resolving deltas: 100% (41131/41131), completed with 1581 local objects.
From <https://github.com/Homebrew/brew>
 * [new branch]          dependabot/bundler/Library/Homebrew/rbi-0.0.11 -> origin/dependabot/bundler/Library/Homebrew/rbi-0.0.11
 * [new branch]          fxcoudert-patch-1                              -> origin/fxcoudert-patch-1
   d5dfe4d6a..2ae21a582  master                                         -> origin/master
 * [new tag]             2.4.10                                         -> 2.4.10
 * [new tag]             2.4.11                                         -> 2.4.11
 * [new tag]             2.4.12                                         -> 2.4.12
Updating files: 100% (2908/2908), done.
HEAD is now at 2ae21a582 Merge pull request #12803 from Homebrew/dependabot/bundler/Library/Homebrew/zeitwerk-2.5.4
Updated 1 tap (homebrew/core).
==> Installation successful!
==> Homebrew has enabled anonymous aggregate formulae and cask analytics.
Read the analytics documentation (and how to opt-out) here:
  <https://docs.brew.sh/Analytics>
No analytics data has been sent yet (nor will any be during this install run).
==> Homebrew is run entirely by unpaid volunteers. Please consider donating:
  <https://github.com/Homebrew/brew#donations>
==> Next steps:
- Run brew help to get started
- Further documentation:
    <https://docs.brew.sh>

Después de instalar Homebrew, estará listo para continuar con la instalación de Podman y Podman Desktop. Esto garantizará que tenga todas las dependencias necesarias para utilizar Podman y Podman Desktop en su sistema MacOS.

Instalación

Podman

  1. Abra Terminal.
  2. Instale Podman utilizando Homebrew con el siguiente comando:

Podman Desktop

  1. Abra Terminal.
  2. Instale Podman Desktop con Homebrew mediante el siguiente comando:

Cómo Utilizar Podman

Para comenzar a utilizar Podman, puede configurar una Máquina Podman, que es similar a una máquina virtual pero utiliza contenedores como unidades de aislamiento. Esto permite una mayor seguridad y flexibilidad al ejecutar aplicaciones en contenedores.

Para iniciar una Máquina Podman, puede utilizar el siguiente comando:

podman machine init

Luego, para iniciar la máquina:

podman machine start

Al utilizar el comando "podman machine init", tiene la opción de especificar la cantidad de memoria y núcleos de CPU asignados a la máquina. Esto es particularmente útil para optimizar el rendimiento y los recursos según las necesidades específicas de su entorno.

Para configurar la cantidad de memoria, utilice la opción "--memory". Por ejemplo, para asignar 2 gigabytes de memoria a la máquina:

podman machine init --memory 2G

Para configurar el número de núcleos de CPU, utilice la opción "--cpus". Por ejemplo, para asignar 2 núcleos de CPU:

podman machine init --cpus 2

Ajustar estos parámetros le permite optimizar el rendimiento de la máquina Podman de acuerdo con los requisitos específicos de su trabajo. Tenga en cuenta que los valores exactos pueden variar según el hardware y el sistema operativo en uso. Asegúrese de consultar la documentación oficial de Podman para obtener información detallada sobre todas las opciones disponibles al configurar su Máquina Podman.

Comandos

Los comandos de Podman son similares a los de Docker, lo que facilita la transición para los desarrolladores familiarizados con Docker. Algunos comandos comunes incluyen:

  1. podman run: Este comando se utiliza para ejecutar un contenedor. Crea una instancia de un contenedor a partir de una imagen. Puede especificar opciones como el mapeo de puertos, variables de entorno y más al ejecutar un contenedor. Por ejemplo:En este ejemplo, estamos ejecutando un contenedor de Nginx en modo desacoplado (-d) y mapeando el puerto 80 del contenedor al puerto 8080 del host.

Resultado:

  1. podman build: Este comando le permite crear una imagen de contenedor a partir de un archivo Dockerfile o de un contexto de creación. Puede personalizar y configurar su imagen utilizando instrucciones en el Dockerfile. Por ejemplo:Esto creará una imagen llamada "my-custom-image" basada en el Dockerfile en el directorio actual.
  2. podman ps: El comando podman ps se utiliza para listar los contenedores en ejecución en su sistema. Proporciona información como el ID del contenedor, el nombre, el estado, los puertos mapeados y más. Puede ver qué contenedores están en ejecución y supervisar su estado.
  3. podman stop: Cuando desea detener un contenedor en ejecución, se utiliza el comando podman stop. Debe proporcionar el ID o el nombre del contenedor que desea detener. Por ejemplo:Esto detendrá el contenedor llamado "my-container".

Estos comandos son esenciales al trabajar con contenedores en Podman y ayudan en la creación, ejecución, supervisión y gestión eficiente de los contenedores.

Resumen

Podman y Podman Desktop ofrecen alternativas viables y efectivas a Docker y Docker Desktop, mejorando la eficiencia y la seguridad en el desarrollo y la gestión de contenedores. Sus características únicas, como los contenedores sin daemon y la compatibilidad con Docker, hacen de estas herramientas una elección sólida para los desarrolladores que buscan flexibilidad y rendimiento.

Referencias