Podman es un motor de contenedores para ejecutar y administrar contenedores OCI en Linux. RedHat lo desarrolla como una alternativa directa a Docker, la famosa plataforma de gestión de contenedores que lo inició todo.
Podman tiene una sintaxis de comandos muy similar a Docker. El podman
principal El comando es seguido por los comandos y opciones de administración de Podman:
A continuación se muestra una tabla que contiene todos los comandos de Podman:
Comando | Descripción |
attach | Adjuntar a un contenedor en ejecución usando su nombre o ID. |
auto-update | Utilice la política de actualización automática de contenedores para actualizar los contenedores. |
build | Use las instrucciones de Containerfiles para crear una imagen. |
commit | Cree una nueva imagen que refleje los cambios realizados en un contenedor. |
container | Gestionar contenedores Podman. |
cp | Copiar archivos/directorios de un contenedor al sistema de archivos local y viceversa. |
create | Cree un contenedor sin iniciarlo. |
diff | Mostrar los cambios realizados en un contenedor o una imagen. |
events | Mostrar eventos de podman. |
exec | Ejecutar un proceso dentro de un contenedor en ejecución. |
export | Cree un archivo tar que contenga el contenido del sistema de archivos del contenedor. |
generate | Cree resultados estructurados basados en un contenedor, volumen o pod. |
healthcheck | Gestionar comprobaciones de estado de contenedores. |
history | Mostrar historial de imágenes. |
image | Administrar imágenes. |
images | Lista de imágenes disponibles en almacenamiento local. |
import | Importar un tarball de imagen del sistema de archivos. |
info | Mostrar información del sistema podman. |
init | Inicializar contenedores. |
inspect | Mostrar contenedor o configuración de imagen. |
kill | Eliminar contenedores. |
load | Cargar una imagen disponible en el archivo contenedor. |
login | Inicio de sesión en el registro del contenedor. |
logout | Cerrar sesión en un registro de contenedor. |
logs | Ver registros de contenedores. |
machine | Gestionar la máquina virtual Podman. |
manifest | Cree y administre listas de manifiestos e índices de imágenes. |
mount | Monte el sistema de archivos raíz de un contenedor o enumere los contenedores montados actualmente. |
network | Gestionar redes Podman. |
pause | Pausar procesos de contenedores. |
play | Reproducir un contenedor, volumen o pod. |
pod | Administrar pods de Podman. |
puerto | Enumere las asignaciones de puertos o enumere una asignación específica del contenedor para el contenedor. |
ps | Lista de contenedores en ejecución. |
pull | Copie una imagen de un registro al almacenamiento local. |
push | Envíe una imagen desde una máquina local a un destino específico. |
rename | Renombrar un contenedor. |
restart | Reiniciar un contenedor. |
rm | Eliminar un contenedor. |
rmi | Eliminar una imagen del almacenamiento local. |
run | Ejecutar un comando en un contenedor. |
save | Guardar imagen en un archivo local. |
search | Busca una imagen en un registro. |
secret | Manipular secretos. |
start | Inicie un contenedor. |
stats | Mostrar estadísticas de uso de recursos. |
stop | Detener un contenedor. |
system | Gestionar los sistemas Podman. |
tag | Asigne un nombre a una imagen local. |
top | Muestra los procesos que se ejecutan en un contenedor. |
unmount | Desmontar el sistema de archivos raíz de un contenedor. |
unpause | Reanudar procesos de contenedor. |
unshare | Inicie un proceso en un nuevo espacio de nombres de usuario. |
untag | Eliminar etiquetas de una imagen local. |
version | Ver la información de la versión. |
volume | Gestionar volúmenes de contenedores. |
wait | Espere a que se detenga un contenedor. |
Tutorial de Podman
Aunque Podman es principalmente un motor de contenedores, está diseñado para crear y ejecutar contenedores OCI, los usuarios también pueden usar podman
Comandos para administrar imágenes de contenedores.
Las siguientes secciones explican cómo usar Podman para crear y manipular imágenes, contenedores y pods.
Ver el manual de ayuda de Podman
Puede hacer referencia a la documentación de Podman rápidamente mediante la línea de comandos. Para ver los podman
disponibles comandos en su terminal, escriba:
podman help
Para ver el manual completo de Podman, use el comando man:
Imágenes de Podman
La creación y gestión de imágenes en Podman se realiza con Buildah, una herramienta de creación de imágenes que utiliza una interfaz coreutils de nivel inferior. Cuando un usuario ejecuta un podman
comando relacionado con las imágenes, Podman llama a Buildah para realizar la acción.
Las siguientes secciones muestran algunos comandos importantes de administración de imágenes.
Búsqueda de imágenes
Buscar registros de imágenes disponibles usando la search
dominio.
podman search [search-term]
Limite el número de resultados con --limit
opción. Por ejemplo, para producir tres resultados para los "centos" término de búsqueda, escriba:
podman search --limit 3 centos
Inspeccionar imagen
Antes de extraer una imagen de Podman, es una buena práctica inspeccionarla. Usa la podman inspect
comando y el sistema genera metadatos de imagen, como el tamaño del archivo, la arquitectura, el sistema operativo, etc.
podman inspect [repository or image ID]
Usa el --format
opción con podman inspect
comando para obtener metadatos específicos. En el siguiente ejemplo, el comando devuelve solo la descripción de la imagen:
podman inspect --format=’{{.Labels.description}}’ [image ID]
Descarga de imágenes
La extracción de imágenes de repositorios en línea se realiza mediante podman pull
dominio. La sintaxis es:
podman pull [registry/image]
El ejemplo ilustra la extracción de una imagen de fedoraproject.org registro:
Imágenes en ejecución
Ejecute imágenes de Podman con podman run
:
podman run [image]
Si la imagen no está disponible localmente, Podman la extrae de un registro en línea y luego la ejecuta como un contenedor.
Visualización de imágenes
Las podman images
El subcomando se usa para enumerar las imágenes disponibles localmente:
podman images
Utilice las opciones para limitar los resultados de la búsqueda. El --filter
La opción filtra la salida según las condiciones que proporcione. Por ejemplo, el siguiente comando busca todas las imágenes que contengan "redhat" en el nombre:
podman images --filter reference=redhat
Creación de imágenes personalizadas
Para crear imágenes personalizadas con Podman, necesita un dockerfile o containerfile. Estos archivos contienen instrucciones que utiliza la herramienta Buildah para crear una imagen.
La creación de archivos se realiza con podman build
dominio. Por ejemplo, para crear una imagen desde un directorio que contenga el script de instrucciones, ejecute el siguiente comando:
podman build .
Buildah recopila el contexto de archivo necesario y crea una imagen.
Eliminación de imágenes
El podman rmi
El comando se utiliza para eliminar imágenes del almacenamiento local. Antes de eliminar una imagen de Podman, asegúrese de que todos los contenedores relacionados se hayan detenido y eliminado.
Elimina una imagen usando el podman rmi
comando seguido del nombre de la imagen o ID:
podman rmi [image-name-or-id]
El resultado confirma que se eliminó la imagen.
Contenedores Podman
Crear y administrar contenedores es la función principal de Podman. Encuentre algunos de los comandos de administración de contenedores más comunes en la siguiente sección.
Contenedores en ejecución
La podman run
El comando tiene las mismas funciones que docker run. Las opciones que siguen al comando dependen del tipo de contenedor que se esté ejecutando. El siguiente ejemplo ilustra la ejecución de un httpd ejemplo, utilizando una imagen disponible en docker.io
repositorio:
podman run -p 8080:80/tcp docker.io/library/httpd
El comando ejecuta el contenedor y muestra su símbolo del sistema.
Salga del aviso del contenedor presionando Ctrl + C . Este comando saldrá del contenedor.
Ejecución de contenedores en segundo plano
Para omitir el aviso del contenedor y ejecutar el contenedor en segundo plano, use la siguiente sintaxis:
podman run -dt -p 8080:80/tcp docker.io/library/httpd
Si el contenedor se inicia correctamente, la salida del comando muestra la ID larga del contenedor.
Adjuntar a contenedores
Ingrese al contenedor con el podman attach
comando:
podman attach [container-name-or-id]
El ejemplo muestra la conexión a un contenedor Alpine Linux en ejecución utilizando el ID del contenedor.
Visualización de contenedores en ejecución
Ver contenedores actualmente en ejecución con ps
comando:
podman ps
El resultado del comando muestra una lista que contiene información básica sobre la ejecución de contenedores.
Eliminación automática de contenedores después del cierre
Usa el --rm
opción con podman run
para eliminar automáticamente un contenedor:
podman run --rm -dt -p 8080:80/tcp alpine:latest
Iniciar y detener contenedores
Usa start
y stop
comandos para iniciar y detener contenedores existentes.
podman start [container-id]
El resultado muestra el ID del contenedor.
podman stop [container-id]
Se muestra el ID del contenedor detenido.
Asignación de nombres a contenedores
Puede nombrar contenedores en ejecución usando la opción --name
con la podman run
dominio. Por ejemplo, para nombrar un contenedor Alpine Linux, use el siguiente comando:
podman run --name AlpineTest -dt -p 8080:80/tcp alpine:latest
La siguiente imagen muestra que podman run
fue exitoso. El podman ps
el comando enumera los contenedores de Podman en ejecución, y el nombre es visible en NAMES
columna.
Visualización de registros de contenedores
Mostrar registros de contenedor en el momento de la ejecución con los podman logs
comando.
podman logs [container-name-or-id]
Usa el -l
marca para mostrar los registros del contenedor más nuevo.
Retirar Contenedores
Para eliminar un contenedor de Podman, primero asegúrese de que el contenedor se haya detenido. Luego, use el podman rm
comando seguido del nombre o ID del contenedor.
podman rm [container-name-or-id]
El siguiente ejemplo muestra la eliminación de AlpineTest contenedor.
Para eliminar un contenedor en ejecución o inutilizable, agregue -f opción.
podman rm -f [container-name-or-id]
Para eliminar varios contenedores de una sola vez, enumere los ID de los contenedores separados por un espacio:
podman rm [container-1-id container-2-id container-3-id]
Cápsulas Podman
Los pods son grupos de contenedores que comparten recursos. Los pods de Podman son la característica que distingue a Podman de Docker. Las siguientes secciones ilustran algunas de las operaciones de pod comunes en Podman.
Vasos de anuncios
Use el siguiente comando para enumerar todos los pods disponibles en el sistema:
podman pod ls
La lista muestra la identificación del módulo, el nombre, el estado, la hora de creación, la identificación de infrarrojos y la cantidad de contenedores que contiene.
Creación de pods vacíos
Cree un pod vacío en Podman usando la siguiente sintaxis:
podman pod create
El resultado muestra el ID del pod recién creado.
Agregar contenedores a los pods
Para agregar un contenedor a un pod, use el --pod
etiqueta con docker run
:
podman run [options] --pod [pod-name-or-id] [image]
En el siguiente ejemplo, se asigna un contenedor Alpine Linux al pod con el ID e06ed089b454 :
Creación de pods con contenedores
Podman puede crear un contenedor y agregarlo a un nuevo pod en una sola podman run
dominio. La sintaxis incluye el --pod
etiqueta:
podman run [options] --pod new:[pod-name] [image]
El siguiente ejemplo ejecuta un contenedor con alpine:latest
imagen y la agrega a un nuevo pod llamado AlpineTest :
El podman pod ls
La salida del comando muestra el nuevo pod con dos contenedores.
Inicio, detención y eliminación de pods
Inicie un pod con el siguiente comando:
podman pod start [pod-name-or-id]
Para detener un pod, ejecute:
podman pod stop [pod-name-or-id]
Para eliminar un pod detenido y su contenedor, use:
podman pod rm [pod-name-or-id]
Para detener y eliminar contenedores en ejecución y luego eliminar el pod, use -f
opción:
podman pod rm -f [pod-name-or-id]
Para eliminar varios pods detenidos con un solo comando, enumere los ID de pod separados por un espacio:
podman pod rm -f [pod1-id pod2-id pod3-id]
Problemas potenciales de Podman y cómo solucionarlos
Esta sección enumera algunos problemas comunes de Podman y brinda soluciones.
No se puede exponer el puerto privilegiado
Podman permite a los usuarios no root ejecutar contenedores. Sin embargo, se limitan a reenviar solo a puertos no privilegiados. Si intenta reenviar a un puerto privilegiado como usuario no root, recibirá el siguiente error:
La solución a este problema es elegir un puerto sin privilegios o ejecutar el comando usando sudo.
Problemas de búsqueda de podman
Otro problema común es la podman search
comando que devuelve una salida vacía.
Este problema suele estar relacionado con /etc/containers/registries.conf
expediente. Abra el archivo en un editor de texto:
sudo nano /etc/containers/registries.conf
Desplácese hasta la parte inferior del archivo y asegúrese de que Podman tenga registros para buscar.
Si no tiene registros enumerados en el archivo, puede agregar los comunes, como RedHat, Fedora y Docker, utilizando la siguiente sintaxis:
unqualified-search-registries=["registry.access.redhat.com", "registry.fedoraproject.org", "docker.io"]
Guarda el archivo. La podman search
la lista debe completarse con los resultados de los registros en línea registrados.
Error:se proporcionó una configuración no válida
Al agregar contenedores a un pod, puede aparecer el siguiente mensaje:
Error: invalid config provided: published or exposed ports must be defined when the pod is created: network cannot be configured when it is shared with a pod
Este problema ocurre cuando intenta agregar un contenedor con puertos que no se definieron en la creación del pod. Actualmente, Podman no permite esto.