
Desarrollado por RedHat, Podman es un motor de contenedor sin daemonless gratuito y de código abierto diseñado para ser un reemplazo directo del popular motor de tiempo de ejecución Docker. Al igual que Docker, facilita la creación, ejecución, implementación y uso compartido de aplicaciones utilizando imágenes de contenedores y contenedores OCI (Open Container Initiative). Podman usa espacios de nombres de usuario y de red y, en comparación con Docker, Podman se considera más aislado y seguro. La mayoría de los comandos de Docker funcionarán en Podman. por lo tanto, si está familiarizado con la ejecución de comandos de Docker, usar podman será muy sencillo.
En esta guía, aprendemos cómo instalar podman en Debian 11 Diana.
Instalar Podman en Debian 11
Los paquetes, bibliotecas y dependencias de podman ya están alojados en los repositorios oficiales de Debian. Por lo tanto, puede instalar podman fácilmente usando el administrador de paquetes APT.
Primero, actualice las listas de paquetes:
$ sudo apt update
A continuación, instale el motor del contenedor podman de la siguiente manera:
$ sudo apt install podman
Cuando se le solicite continuar, escriba 'Y' y presione ENTER.
Para verificar la versión de Podman instalada, ejecute:
$ podman --version

Para recopilar más detalles sobre el motor del contenedor podman, ejecute el comando:
$ sudo podman info
Debería ver una ráfaga de resultados que muestran detalles intrincados como los que tenemos a continuación.

Configurar los registros de Podman
El archivo de registro registry.conf
es un archivo de configuración que especifica los registros de contenedores que se utilizarán siempre que desee enviar o extraer una imagen. La ruta completa al archivo es /etc/containers/registries.conf
. Existen varios registros de contenedores, incluidos Docker Hub, Quay.io, RedHat y muchos más.
Puede ver el archivo usando su editor de texto como se muestra
# sudo /etc/containers/registries.conf
En Docker, el único registro de contenedores es Docker Hub. Podman ofrece a los usuarios más libertad para buscar y extraer imágenes de cualquier registro. Puede definir la lista de registros de contenedores agregando la siguiente línea.
unqualified-search-registries = [ 'registry.access.redhat.com', 'registry.redhat.io', 'docker.io']
Al ejecutar la podman search
o podman pull
comando, podman se pondrá en contacto con estos registros comenzando con el primero en ese orden. Guarde los cambios y salga del archivo.
Buscando imágenes
Antes de extraer imágenes de contenedores, es prudente buscar su disponibilidad en varios registros.
Por ejemplo
$ sudo podman search nginx

El resultado le presenta una gran cantidad de información, incluido el nombre del registro, el nombre de la imagen y una breve descripción.
Iniciar sesión en un registro
Antes de comenzar a extraer o enviar imágenes, debe iniciar sesión en un registro. En el siguiente ejemplo, estoy iniciando sesión en mi cuenta de Redhat que, en efecto, me da acceso al registro.
$ sudo podman login registry.access.redhat.com

Para cerrar sesión en el registro, ejecute el comando:
$ sudo podman logout registry.access.redhat.com
Extracción de una imagen
Para extraer una imagen, use la sintaxis:
$ sudo podman pull image_name
Por ejemplo, para obtener las imágenes de compilación oficiales de Nginx, ejecute el comando:
$ sudo podman pull docker.io/library/nginx

Intentemos sacar otra imagen. Extraeremos la imagen oficial de MongoDB de la siguiente manera.
$ sudo podman pull docker.io/library/mongo

Listar una imagen
Para enumerar todas las imágenes, emita el comando.
$ sudo podman images

Crear un contenedor a partir de una imagen
Ahora que tenemos nuestras imágenes residiendo en el sistema Debian, podemos lanzar un contenedor usando la sintaxis que se muestra. La opción -d ejecuta el contenedor en segundo plano y --name
opción especifica un nombre personalizado para el contenedor
$ sudo podman run -d --name container_name image
Por ejemplo, para lanzar un contenedor en segundo plano llamado webserv1 desde la imagen de Nginx, ejecute el comando:
$ sudo podman run -d --name webserv1 docker.io/library/nginx
Puede lanzar varios contenedores desde la misma imagen. Lancemos otro contenedor llamado webserv2 desde la misma imagen de Nginx.
$ sudo podman run -d --name webserv2 docker.io/library/nginx

Listado de contenedores
En esta sección, veremos varios comandos que puede usar con contenedores.
Para verificar los contenedores que se están ejecutando actualmente, emita el comando:
$ sudo podman ps
El resultado se presenta en columnas que brindan información como el ID del contenedor, el nombre de la IMAGEN, el comando que ejecuta el contenedor, la fecha de creación y el estado.

Para enumerar todos los contenedores, incluidos los que han salido, ejecute:
$ sudo podman ps -a
Detener un contenedor
Para detener un contenedor, use la sintaxis
$ sudo podman stop CONTAINER_ID
O
$ sudo podman stop container_name
En el ejemplo a continuación, detuve el primer contenedor enumerado usando su ID de contenedor
$ sudo podman stop 9daeaabdfdfc
Puede verificar que el contenedor se ha detenido utilizando el podman ps
dominio. Podemos ver claramente que después de detener la imagen, solo tenemos 1 imagen en ejecución.

El podman ps -a
El comando enumerará ambos contenedores que comprenden el contenedor que se acaba de detener.
$ sudo podman ps -a

Inicio de un contenedor
Para iniciar un contenedor use la sintaxis:
$ sudo podman start CONTAINER_ID
O
$ sudo podman start container_name
Por ejemplo, para iniciar webserv1, ejecute:
$ sudo podman start webserv1

Acceder al caparazón de un contenedor
El acceso al shell de un contenedor se demuestra mejor con un contenedor de un sistema operativo.
Aquí, vamos a descargar o extraer una imagen de Ubuntu:
$ sudo podman pull docker.io/library/ubuntu
A partir de la imagen, crearemos o lanzaremos un contenedor y obtendremos acceso al shell usando -it
opción.
$ sudo podman run --name ubuntu -it docker.io/library/ubuntu /bin/bash

- -i, –interactive Mantenga STDIN abierto incluso si no está conectado
- -t, –tty Asigna un pseudo-TTY. El valor predeterminado es falso
Comprobar los registros de un contenedor
Para verificar los registros de un contenedor, use la sintaxis:
$ sudo podman logs container_name
Por ejemplo:
$ sudo podman logs webserv2

Mostrar estadísticas de contenedores
Para mostrar las estadísticas de todos los contenedores en ejecución, ejecute:
$ sudo podman stats

Inspeccionar un contenedor
Para imprimir detalles complejos sobre un contenedor, use la opción de inspección:
$ sudo podman inspect webserv2
Esto imprime una salida larga en formato JSON.

Utilice la opción --format para filtrar la salida. Por ejemplo, para imprimir la dirección IP del contenedor webserv2, ejecute
$ sudo podman inspect webserv2 --format '{{.NetworkSettings.IPAddress}}'
A continuación, puede obtener información adicional de la IP, por ejemplo, utilizando curl para recuperar encabezados HTTP.
$ curl -I ip-address

Eliminar un contenedor
Para eliminar o eliminar un contenedor por completo, primero detenga el contenedor, en caso de que se esté ejecutando, y finalmente elimínelo. En este ejemplo, hemos detenido y eliminado el contenedor websev1.
$ sudo podman stop webserv1
Luego retire el contenedor detenido.
$ sudo podman rm webserv1

Eliminar una imagen
Para eliminar una imagen, primero asegúrese de haber detenido y eliminado todos los contenedores que se iniciaron desde la imagen. A continuación, utilice el rmi
opción como se muestra.
$ sudo podman rmi image_name
Por ejemplo, para eliminar la imagen de ubuntu, ejecute el comando:
$ sudo podman rmi docker.io/library/ubuntu

Instalar Podman más reciente:compilar desde la fuente
Puede probar la última versión de Podman instalando la versión de desarrollo desde la fuente.
01. Crear y ejecutar dependencias
sudo apt-get install \
btrfs-progs \
git \
golang-go \
go-md2man \
iptables \
libassuan-dev \
libbtrfs-dev \
libc6-dev \
libdevmapper-dev \
libglib2.0-dev \
libgpgme-dev \
libgpg-error-dev \
libprotobuf-dev \
libprotobuf-c-dev \
libseccomp-dev \
libselinux1-dev \
libsystemd-dev \
pkg-config \
runc \
make \
libapparmor-dev \
gcc \
cmake \
uidmap \
libostree-dev
02. Instalar Común
El común es el monitor del contenedor, que es un pequeño programa en C cuyo trabajo es observar el proceso principal del contenedor.
git clone https://github.com/containers/conmon
cd conmon
make
sudo make podman
sudo cp /usr/local/libexec/podman/conmon /usr/local/bin/
03. Instalar runc
Para instalar la última versión de runc
git clone https://github.com/opencontainers/runc.git $GOPATH/src/github.com/opencontainers/runc
cd $GOPATH/src/github.com/opencontainers/runc
make BUILDTAGS="selinux seccomp"
sudo cp runc /usr/bin/runc
03. Instalar la interfaz de red de contenedores (CNI)
El complemento CNI se utiliza para insertar una interfaz de red en el espacio de nombres de red del contenedor.
git clone https://github.com/containernetworking/plugins.git $GOPATH/src/github.com/containernetworking/plugins
cd $GOPATH/src/github.com/containernetworking/plugins
./build_linux.sh
sudo mkdir -p /usr/libexec/cni
sudo cp bin/* /usr/libexec/cni
Configurar la red
sudo mkdir -p /etc/cni/net.d
curl -qsSL https://raw.githubusercontent.com/containers/libpod/master/cni/87-podman-bridge.conflist | sudo tee /etc/cni/net.d/99-loopback.conf
Agregar la configuración
sudo mkdir -p /etc/containers
sudo curl -L -o /etc/containers/registries.conf https://src.fedoraproject.org/rpms/containers-common/raw/main/f/registries.conf
sudo curl -L -o /etc/containers/policy.json https://src.fedoraproject.org/rpms/containers-common/raw/main/f/default-policy.json
04. Instalar Podman desde la fuente
git clone https://github.com/containers/podman/ $GOPATH/src/github.com/containers/podman
cd $GOPATH/src/github.com/containers/podman
make
sudo make install
$ podman --version
podman version 4.0.0-dev
Conclusión
Esperamos haber proporcionado una base sólida en su viaje para convertirse en un mejor profesional en el uso de podman para crear y administrar contenedores. Esta guía lo guió a través de la instalación de podman en Debian 11 Buster.