# Tutorial de Podman

En los últimos años, la [virtualización](https://www.ionos.mx/digitalguide/servidores/configuracion/virtualizacion/ "Virtualización") de contenedores ha adquirido cada vez más relevancia. En concreto, esta tecnología se popularizó con el lanzamiento de Docker en 2013 y actualmente forma parte de diferentes herramientas para **controlar *namespaces*** (en español, *espacios de nombres*). Una de las soluciones más interesantes es Podman, que originalmente se concibió como una herramienta de depuración para [CRI-O](https://www.ionos.mx/digitalguide/servidores/know-how/que-es-cri-o/ "¿Qué es CRI-O?"), con el fin de facilitar el trabajo con grupos de Kubernetes. Sin embargo, el *software* se ha convertido rápidamente en un motor amplio e independiente para **la gestión de contenedores**.

Nota Los *namespaces* o espacios de nombres permiten agrupar en un contenedor elementos seleccionados de un código (por ejemplo, la clase).

A continuación, descubrirás qué características hacen tan especial a Podman y cómo sacarle el máximo partido a esta herramienta de contenedores.

## ¿Qué es Podman?

Podman (abreviatura de *Pod Manager*) es un motor de contenedores lanzado por primera vez en febrero de 2018 por la empresa de *software* estadounidense **Red Hat**, conocida principalmente por sus soluciones empresariales de alto rendimiento para diferentes proyectos de código abierto, como Red Hat Enterprise Linux (RHEL) u [OpenStack](https://www.ionos.mx/digitalguide/servidores/herramientas/que-es-openstack/ "¿Qué es OpenStack?"). Basándose en la experiencia de [Docker](https://www.ionos.mx/digitalguide/servidores/know-how/docker-tools-el-ecosistema-docker-de-cerca/ "Docker tools: el ecosistema Docker de cerca"), en un principio estaba previsto que Podman no fuese un motor independiente, sino una herramienta de depuración sencilla para CRI-O, un plan que pronto se rechazó.

Este *software* de contenedores es similar a Docker en muchos aspectos y utiliza, por ejemplo, el mismo intérprete de línea de comandos que el estándar de la industria. Eso hace que sea incluso posible **usar los típicos comandos de Docker en Podman**. Para ello solo es necesario establecer el alias *alias docker=podman*. Así, cambiar de Docker a Podman suele ser relativamente sencillo. La innovación clave que Podman trae consigo es que **renuncia a un *daemon* central** como instancia de control para cada uno de los contenedores. Esto brinda la oportunidad de acceder a las distintas aplicaciones virtualizadas **sin privilegios de *root***.

Nota En los sistemas operativos Unix/Linux se denomina *daemon* a un programa que se ejecuta en segundo plano y que pone a disposición del usuario servicios y procesos concretos.

Podman funciona en **las principales distribuciones de Linux**, como Ubuntu, Fedora, CentOS, Debian y RHEL, así como en Raspbian (sistema operativo Raspberry Pi). En la mayoría de los casos, el motor se puede instalar directamente desde la configuración del paquete del sistema correspondiente.

Consejo En nuestra Digital Guide también encontrarás información sobre “[Podman vs. Docker: ¿dónde se encuentra el futuro del mundo de los contenedores?](https://www.ionos.mx/digitalguide/servidores/know-how/podman-vs-docker/ "Podman vs. Docker")”.

## Diseño y funciones principales de Podman

Además de renunciar a un *daemon* central, otra de las características más destacadas de Podman son los denominados ***pods***. Estos *pods*, inspirados en el concepto de los *pods* de Kubernetes, son la fusión de varios contenedores en un *namespace* común de Linux que **comparten recursos** concretos. De esta manera, se pueden combinar una amplia variedad de aplicaciones virtualizadas.

Como ya hemos mencionado, es posible **ejecutar** los contenedores en el ordenador principal como **usuario habitual sin privilegios de *root***, si bien dentro de un contenedor los procesos sí son ejecutados mediante *root*. Podman lo consigue recurriendo a los *namespace* de usuario del núcleo de Linux, que asignan privilegios especiales y un ID de usuario a los procesos. El hecho de que los contenedores en realidad se ejecuten como administrador dota al entorno virtualizado Podman de un elevado estándar de seguridad.

El núcleo de un *pod* está integrado por los llamados **contenedores *infra***, que son los únicos responsables de la funcionalidad de la fusión. Con este fin, los contenedores infra gestionan y garantizan recursos tales como *namespaces*, puertos de red, CPU, memoria principal, etc. Además, en lo que respecta a la gestión de *pods*, Podman apuesta por la **herramienta de supervisión** [Conmon](https://github.com/containers/conmon "Proyecto Conmon sobre GitHub"), guardada en el disco C, que controla cada uno de los componentes virtualizados y, entre otras cosas, asegura los *logs*. Además, la herramienta actúa como una interfaz para el terminal de cada contenedor. Como **tiempo de ejecución para el contenedor,** Podman utiliza el software [runC](https://github.com/opencontainers/runc "El directorio GitHub de runC"), que también está integrado en muchas otras soluciones como Docker o rkt.

[![Imagen: Gráfica: estructura esquemática de un pod](https://www.ionos.mx/digitalguide/fileadmin/_processed_/3/b/csm_estructura-esquematica-de-un-pod_98227a55d8.webp "Gráfica: estructura esquemática de un pod")](https://www.ionos.mx/digitalguide/fileadmin/DigitalGuide/Schaubilder/estructura-esquematica-de-un-pod.png) Gráfica: estructura esquemática de un pod ## Tutorial de Podman: primeros pasos con Podman

Una vez presentadas las características básicas de Podman, en el siguiente tutorial resumimos los puntos principales para empezar a **trabajar con este motor de contenedores**.

### Instalar Podman en Linux

Podman es un *software* para **ejecutar contenedores de Linux**. En las distribuciones de Linux como CentOS, Ubuntu o Debian se instala de forma rápida y sencilla. En la mayoría de los casos, los paquetes de instalación pueden encontrarse directamente en la gestión de paquetes del respectivo *software* e instalarse usando los comandos de terminal típicos del sistema.

Nota Como alternativa a los paquetes nativos en el repositorio del sistema, el [proyecto Kubic en opensuse.org](https://build.opensuse.org/project/show/devel:kubic:libcontainers:stable "opensuse.org: Proyecto Kubic") ofrece distintos **paquetes de instalación de Podman** para distintas distribuciones y versiones.

**Debian, Ubuntu, Raspbian**:

```none
sudo apt-get update -qq
sudo apt-get -qq -y install podman
```

**Fedora, CentOS, Amazon Linux 2, RHEL 7**:

```none
sudo yum -y install podman
```

**OpenSUSE**:

```none
sudo zipper install podman
```

### Instalar Podman en Windows y MacOS

Podman se siente como en casa en entornos Linux. Sin embargo, también podrás utilizar este motor de contenedores en dispositivos con sistemas operativos Windows o MacOS. El requisito sine qua non es que tengas desde dichos dispositivos **acceso a una instalación de Linux**, que puede ejecutarse **desde una máquina virtual en el *host*** o bien ser **accesible desde la red**.

Si tienes la posibilidad de acceder a dicha instalación, solo necesitarás un cliente remoto Podman con el que establecer una conexión SSH con servidor *backend* de Podman.

Nota La información sobre la conexión SSH debe introducirse en el archivo de configuración *Podman-remote.conf*. Encontrarás información detallada sobre su **uso e instalación** en el [tutorial de cliente remoto Podman en GitHub](https://github.com/containers/libpod/blob/master/docs/tutorials/remote_client.md "Tutorial GitHub: “Podman cliente remoto”").

### ¿Cómo funciona la gestión de imágenes de contenedor con Podman?

En lo que respecta a las características y la sintaxis, Podman se basa en Docker. Por eso, al **configurar el contenedor deseado** puedes acceder a la gran biblioteca de imágenes de Docker listas para su uso, que también se conoce como [Docker Hub](https://hub.docker.com/ "Docker Hub: Biblioteca y comunidad para imágenes de contenedores"). Con la ayuda del **comando *pull*** podrás descargar las imágenes de las aplicaciones que desees como, por ejemplo, la **última versión de Ubuntu**:

```none
podman pull hub.docker.com/_/ubuntu:latest
```

La ruta oficial de almacenamiento de cada una de las imágenes es la ruta de acceso local /.local/share/containers/, en la que cada usuario tiene su propio espacio de nombre. Así, la configuración del contenedor propio, por ejemplo, está separada de la configuración root. Con el siguiente comando conseguirás una **vista general de las imágenes guardadas en el disco duro local:**

```none
podman images
```

Si lo que deseas es una **lista de las imágenes *root*,** deberás escribir el típico comando de Linux *sudo*:

```none
sudo podman images
```


This is a markdown version of: [https://www.ionos.mx/digitalguide/servidores/herramientas/tutorial-de-podman/](https://www.ionos.mx/digitalguide/servidores/herramientas/tutorial-de-podman/) for AI/LLM consumption.