Cuando se habla del futuro de la tecnología, muchos técnicos experimentados saben que la virtualización y la contenerización son, en gran medida, ese camino. Permiten una mayor seguridad de las aplicaciones y los servicios, y se administran fácilmente a través de otros servicios que permiten la creación de instantáneas, las plantillas y una mayor personalización de la que se obtiene con el modelo de un servidor por aplicación. Sin embargo, no siempre está completamente claro cómo debe comenzar con la virtualización y la contenedorización. Hemos cubierto la virtualización en Linux, Windows y macOS muchas veces antes, pero la contenedorización tiende a ser un poco diferente. En este artículo, le proporcionamos una guía para principiantes de Podman en Linux, una gran herramienta para la creación de contenedores.
¿Qué son los contenedores?
Los contenedores son esencialmente pequeñas máquinas virtuales, pero solo para aplicaciones. Usan muchos de los mismos conceptos y tienen muchas de las mismas características de seguridad y facilidad de uso, pero son mucho más pequeñas y permiten una fácil distribución y generación de imágenes de una aplicación. Esto es en gran parte en lo que se basan Flatpaks y Snaps. Puede comenzar a ver los paralelos: un programa, múltiples aplicaciones que se ejecutan en entornos aislados.
¿Qué es Podman?
Muchos de nosotros hemos oído hablar de Docker, el OG de motores de contenedores. Podman es un motor de contenedores similar que usa una estructura muy similar a Docker con un par de diferencias clave.
Una es que Podman no tiene demonios, mientras que Docker se basa en un demonio. Esto significa que los contenedores de Podman pueden funcionar sin permisos de nivel raíz, lo que permite una mayor seguridad y flexibilidad. Un contenedor que se ejecuta a nivel de usuario significa que los usuarios solo pueden ver sus contenedores y nadie más. Podman es más liviano en recursos del sistema debido a la arquitectura más simple, lo que hace que la experiencia sea más agradable.
La arquitectura sin demonios conduce a algo llamado contenedores sin raíces. Es un concepto que se basa en la diferencia anterior, pero se centra en la seguridad. Si un atacante compromete su contenedor y logra escapar por cualquier motivo, solo tiene permisos de usuario básicos en lugar de permisos de root. Esto requiere una configuración adicional para comenzar, y hay algunas deficiencias en este momento, pero es algo que vale la pena ver.
Instalación de Podman
Para la mayoría de las distribuciones, Podman está en los repositorios principales, lo que lo convierte en un comando de instalación simple:
# Debian/Ubuntu sudo apt install podman # Fedora/CentOS/Redhat sudo dnf install podman # Arch Linux sudo pacman -S podman # OpenSUSE sudo zypper install podman # Gentoo sudo emerge app-emulation/podman
Usando Podman
La sintaxis del comando para iniciar un contenedor Podman puede ser un poco confusa, pero una vez que empiece a dominarlo, empezará a reconocer los patrones. Hay un contenedor de muestra del proyecto que puede ejecutar ingresando este comando en la terminal:
podman run -dt -p 8080:8080/tcp -e HTTPD_VAR_RUN=/run/httpd -e HTTPD_MAIN_CONF_D_PATH=/etc/httpd/conf.d -e HTTPD_MAIN_CONF_PATH=/etc/httpd/conf -e HTTPD_CONTAINER_SCRIPTS_PATH=/usr/share/container-scripts/httpd/ registry.fedoraproject.org/f29/httpd /usr/bin/run-httpd
Eso extraerá algunas imágenes del registro que aparece en la lista y, una vez hecho, obtendrá un número largo. Terminará viendo eso más tarde cuando revise los contenedores en ejecución.
Para verificar la ejecución de contenedores de Podman, ingrese el siguiente comando:
podman ps
Verá el contenedor que comenzó antes. Esto confirma que se está ejecutando. Sin embargo, si desea ver específicamente la página web que se ejecuta Apache, ejecutará el siguiente comando:
curl http://0.0.0.0:8080
Reemplazo 0.0.0.0
con cualquier dirección IP que se muestre cuando ejecutó el podman ps
mando. Debería obtener un montón de HTML confuso, pero si mira directamente en la parte superior, notará la sintaxis de un título en HTML y sabrá que está funcionando.
<title>Test Page for the Apache HTTP Server on Fedora</title>
Imágenes de Podman
Algo bueno de Podman es el uso de imágenes. Puede buscar otras imágenes como la httpd
u otros programas que le interese ejecutar.
podman search CONTAINERNAME
Yo busqué vncserver
, y esto es lo que obtuve. Puede ver que hay muchas opciones y todo se reducirá a sus preferencias personales.
Para tomar una de esas imágenes, ejecute el podman pull
mando.
podman pull CONTAINERNAME
Se recomienda que extraiga la URL completa para que el registro del contenedor sea completamente preciso. Como ejemplo, el comando que estoy ejecutando es:
podman pull docker.io/michaelaboeckler/vncserver
en lugar de solo correr podman pull vncserver
porque puede haber imágenes que no quiero que se elijan en lugar de esta que sí quiero.
También puede verificar sus imágenes con este comando:
podman images
Y detenga los contenedores con este comando:
podman stop -l
los -l
flag significa que detendrá el último contenedor de ejecución, pero también puede usar el -a
bandera para detener todos los contenedores.
Es posible que haya notado que Podman también puede buscar en docker.io imágenes de contenedor. Esto se debe a que los comandos de Podman y los comandos de Docker son esencialmente los mismos, tanto que a veces se recomienda alias el docker
comando para podman
como esto:
alias docker='podman'
Esto significa que cada vez que ingrese docker
, su máquina ejecutará el podman
comando de todos modos.
Podman desarraigado
Para configurar su sistema para contenedores sin raíz, hay bastante configuración que realizar, pero hay una gran documentación sobre su Página de Github.
Espero que haya disfrutado de esta introducción a Podman, una pequeña herramienta que le permitirá ejecutar contenedores sin demonios y sin raíces para mantener su sistema limpio, ordenado y seguro. Si lo hizo, asegúrese de consultar algunos de nuestros otros contenidos de contenedores, como nuestras guías sobre cómo ejecutar Ubuntu en un contenedor en ChromeOS, copiar contenedores de Docker a otro host y limitar los recursos de contenedores de Docker.