Como instalar Podman

Podman, el príncipe intrépido

Este es uno de los capítulos del tutorial Podman, el príncipe intrépido. Encontrarás los enlaces a todos los de capítulos, al final de este artículo.

Instalar Podman es algo relativamente sencillo, dependiendo del sistema operativo en el que lo quieras hacer. También, en el caso de Linux, depende, no solo, de la distribución sobre la que lo quieres hacer, sino también sobre la versión de la distribución. Pero, en general, es algo, que como verás es sencillo.

En particular, en este capítulo del tutorial de Podman, te acompañaré en la instalación de este gestor de contenedores, en dos plataformas distintas, primero Linux, y posteriormente en Windows.

En el caso de Linux, me centraré en las distribuciones Ubuntu, Debian y Raspberry Pi OS, mas que nada, porque estas son las que tengo a mano, y siempre quiero probar todo lo que aparece en los tutoriales.

Respecto a Windows, la instalación de Podman la realizaré con WSL2, Windows Subsystem for Linux versión 2, sobre el que hablé en el episodio 231 del podcast titulado Linux en Windows.

Como instalar Podman

Como instalar Podman

Como te decía en la introducción, en este capítulo sobre como instalar Podman, te mostraré como hacerlo tanto en Linux como en Windows. Empezando por Linux.

En cualquiera de los casos, una vez hayas completado el como instalar Podman, no está de mas que realices una comprobación para que te asegures que todo funciona correctamente. Para ello, simplemente ejecuta la siguiente instrucción,

podman run hello-world

O en caso de que quieras recibir el saludo en español, también lo puedes probar con,

podman run atareao/hola-mundo

No te preocupes, que durante los siguientes capítulos del tutorial te mostraré como puedes hacer tu mismo esta imagen, subirla a los repositorios para poder utilizarla desde donde tu necesites.

Linux

En el caso de Linux, utilizaré tres distribuciones, Ubuntu, Debian y Raspberry Pi OS.

Ubuntu

En el caso de querer realizar la instalación de Podman en Ubuntu, te enfrentarás a dos situaciones, dependiendo de la versión de Ubuntu. Para el caso de versiones igual o superior a 20.10 la instalación es tan sencilla como ejecutar estas dos instrucciones en un terminal,

sudo apt update
sudo apt install podman

Para el caso de versiones anteriores a Ubuntu 20.10, tendrás que ejecutar estas cuatro instrucciones,

source /etc/os-release
echo "deb https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/xUbuntu_${VERSION_ID}/ /" | sudo tee /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list
curl -L https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/xUbuntu_${VERSION_ID}/Release.key | sudo apt-key add -
sudo apt-get update
sudo apt-get -y upgrade
sudo apt-get -y install podman

Debian

En el caso de Debian, te encontrarás con la misma situación que la planteada en el apartado anterior. Depende básicamente de la versión de Debian que tengas. En el caso de Bullseye, la instalación es tan sencilla como ejecutar,

sudo apt update
sudo apt install podman

Para versiones anteriores,

echo 'deb http://deb.debian.org/debian buster-backports main' >> /etc/apt/sources.list
echo 'deb https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/Debian_10/ /' > /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list
curl -L https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/Debian_10/Release.key | sudo apt-key add -
sudo apt-get update
sudo apt-get -y -t buster-backports install libseccomp2
sudo apt-get -y install podman

Raspberry Pi OS

En el caso de Rasbperry, depende de la arquitectura que hayas seleccionado. Si estás utilizando armhf en este caso, si estás utilizando la versión 10, tienes que ejecutar las siguientes instrucciones,

# Raspbian 10
# First enable user namespaces as root user
echo 'kernel.unprivileged_userns_clone=1' | sudo tee -a /etc/sysctl.d/00-local-userns.conf
sudo systemctl restart procps

# Use buster-backports on Rasbian 10 for a newer libseccomp2
echo 'deb http://deb.debian.org/debian buster-backports main' | sudo tee -a /etc/apt/sources.list
echo 'deb https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/Raspbian_10/ /' | sudo tee /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list
curl -L https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/Raspbian_10/Release.key | sudo apt-key add -

# Add missing keys for buster-backports manually
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 04EE7237B7D453EC
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 648ACFD622F3D138

sudo apt-get update
sudo apt-get -y -t buster-backports install libseccomp2
sudo apt-get -y install podman
# Restart dbus for rootless podman. Do this for every user using containers.
# This command only works without root. One way to do this is to login as the
# user via SSH, so DBUS_SESSION_BUS_ADDRESS will be set correctly.
systemctl --user restart dbus

Si la arquitectura es arm64 en este caso, tienes que seguir exactamente los mismos pasos que he indicado anteriormente para Debian.

Windows

La instalación de Podman en Windows es casi tan sencilla como con Ubuntu, pero tienes que dar algún paso adicional. Aunque tampoco te tienes que preocupar, porque como verás a continuación es realmente sencillo. Lo mejor de todo, es que en unos pocos instantes, puedes estar levantando contenedores de forma sencilla.

Requisito básico para que esto funcione correctamente es que tengas instalado el WSL2. Si no sabes como instalarlo, te recomiendo que escuches el podcast 239 de Linux en Windows, y que revises las notas del podcast.

Una vez tengas instalado y funcionando el subsistema de de Windows para Linux tienes que instalar desde la tienda de aplicaciones Ubuntu. Una vez instalado Ubuntu, sigue los pasos que te indico a continuación,

El primer paso es añadir el repositorio e instalar Podman, para ello no tienes mas que seguir las instrucciones que detallo a continuación,

source /etc/os-release
sudo sh -c "echo 'deb http://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/x${NAME}_${VERSION_ID}/ /' > /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list"
wget -nv https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable/x${NAME}_${VERSION_ID}/Release.key -O Release.key
sudo apt-key add - < Release.key
sudo apt update
sudo apt install podman

Llegados a esto punto, si quieres levantar los contenedores sin necesidad de ganar derechos de administrador, es decir, sin privilegios de root, tienes que ejecutar la siguiente instrucción,

mkdir -p ~/.config/containers
cp /etc/containers/containers.conf ~/.config/containers/
sed -i 's/^\#\sevents_logger\s=\s\"journald\"/ events_logger = "file"/g' ~/.config/containers/containers.conf

Llegados a este punto ya pueds ejecutar la instrucción siguiente y comprobar que todo funciona como esperas,

podman run atareao/hola-mundo

Primeros pasos con Podman

Antes de profundizar en imágenes y contenedores, y ahora que has terminado la instalación de Podman en tu sistema operativo, estoy convencido de que no te vas a poder resistirte a ponerlo a prueba, a comenzar a utilizarlo. En este sentido, a continuación, te muestro algunas indicaciones para que comiences a dar tus primeros pasos con Podman.

Configuración adicional

Una de las características de Podman es la posibilidad de trabajar sin necesidad de ganar derechos de administrador, rootless mode. Sin embargo, para esto es necesario realizar algunas acciones.

  • El primer paso es instalar slirp4netns. Si no me equivoco, al menos, en el caso de Ubuntu se instala con Podman, pero en cualquier caso, lo puedes instalar ejecutando sudo apt install slirp4netns.
  • Tienes que instalar fuse-overlayfs y tenerlo habilitado. Si has instalado Podman antes que esta herramienta tienes que configurarlo de forma manual. Para ello, tienes que editar el archivo /etc/containers/storage.conf y modificar driver en la sección storage a overlay, y por otro lado tienes que des comentar mount_program = "/usr/bin/fuse-overlayfs" en la sección storage.options.overlay. Es decir,
[storage]
driver = "overlay"
...
[storage.options.overlay]
mount_program = "/usr/bin/fuse-overlayfs"
...

De nuevo, indicarte que si instalaste Podman antes de instalar fuse-overlayfs, tienes que borrar el siguiente directorio para que todo funcione perfectamente,

rm -rf ~/.local/share/containers/storage/

La ayuda

Podman, como no podía ser de otra forma, viene empaquetado con su propia ayuda, a la que puedes acceder fácilmente con tan solo ejecutar podman --help. Esto te ofrece una ayuda básica para cada uno de sus comandos,

$ podman --help

Manage pods, containers and images

Usage:
podman [options] [command]

Available Commands:
  attach      Attach to a running container
  auto-update Auto update containers according to their auto-update policy
  build       Build an image using instructions from Containerfiles
  commit      Create new image based on the changed container
...

Sin embargo puedes obtener mas ayuda para cada uno de los comandos ejecutando podman <comando> --help, como puedes ver en el siguiente ejemplo que te muestro a continuación,

$ podman run --help

Run a command in a new container

Description:
  Runs a command in a new container from the given image

Usage:
  podman run [options] IMAGE [COMMAND [ARG...]]

Examples:
  podman run imageID ls -alF /etc
  podman run --network=host imageID dnf -y install java
  podman run --volume /var/hostdir:/var/ctrdir -i -t fedora /bin/bash

Options:
  --add-host strings   Add a custom host-to-IP mapping (host:ip) (default [])
  --annotation strings Add annotations to container (key:value
...

De la misma manera, puedes acceder a esta ayuda utilizando las páginas man. Así para llegar a la ayuda de Podman simplemente tienes que ejecutar man podman. Mientras que para tener la ayuda de cualquiera de los comandos, hay que hacerlo de forma ligeramente diferente man podman-<comando>. Por ejemplo, para el mismo caso que has visto en el ejemplo anterior,

$ man podman-run

NAME
  podman-run - Run a command in a new container

SYNOPSIS
  podman run [options] image [command [arg ...]]

  podman container run [options] image [command [arg ...]]

DESCRIPTION
  Run a process in a new container. podman run starts a process with its own file
  system, its own networking, and its own isolated process tree. The image which
  starts the process may define defaults related to the process that will be run in
  the container, the networking to expose, and more, but podman run gives final
  control to the operator or administrator who starts the container from the image.
  For that reason podman run has more options than any other Podman command.

Como tu mismo has podido observar, la ayuda que aparece en las manpages es mucho mas completa

Autocompletado

Aparte de la ayuda, otra herramienta que te puede ser de gran utilidad es el autocompletado. Al menos en el caso de Ubuntu y Bash este se instala por defecto, y funciona a la perfección, aunque por lo que puedo leer en GitHub, se hizo un merge donde se incluyó el autocompletado tanto para Zsh como para Fish.

El autocompletado te facilita el uso de podman, al igual que sucede con otras muchas herramientas directamente en el terminal. Simplemente tienes que introducir parte de una instrucción y pulsando la tecla tabulador se producirá la magia.

Para que veas el funcionamiento en tiempo real, y si ya has probado a ejecutar hello-world o hola-mundo, ahora escribe podman run hol y pulsa la tecla tab. Si todo ha ido bien, tienes que ver como se completa y aparece podman run hola-mundo.

Esto funciona tanto con los comandos y sub comandos de Podman, como con las imágenes y contenedores que tengas disponibles en tu equipo.

Conclusiones

Una vez instalado Podman, el siguiente paso, es comenzar a trabajar con imágenes, y posteriormente con los propios contenedores en si. Y luego ya todo lo que tu quieras. En el siguiente capítulo del tutorial, nos adentraremos en el uso de las imágenes con Podman.


Más información,

Imagen de portada de Fleur en Unsplash

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *