GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Tutorial Podman - Conceptos básicos para principiantes

Introducción

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.

Este tutorial lo ayudará a comprender cómo funciona Podman al explicar su sintaxis de comandos y brindar ejemplos de la vida real sobre cómo usar los comandos de Podman.

Requisitos previos

  • Acceso a una línea de comando/ventana de terminal.
  • Podman instalado y configurado (consulte Cómo instalar Podman en macOS o Cómo instalar Podman en Ubuntu).

Comandos de Podman

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:

podman [command] [options]

A continuación se muestra una tabla que contiene todos los comandos de Podman:

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.


Ubuntu
  1. Tutorial de Python SciPy:una guía para principiantes

  2. Tutorial de Jenkins:conceptos básicos para principiantes

  3. Tutorial de configuración de red Netplan para principiantes

  4. Tutorial de comando cd de Linux para principiantes (8 ejemplos)

  5. Tutorial de comando de fecha de Linux para principiantes (8 ejemplos)

Tutorial de comandos OD de Linux para principiantes (6 ejemplos)

Tutorial de comando Linux w para principiantes (5 ejemplos)

Tutorial de comandos ss de Linux para principiantes (8 ejemplos)

Tutorial de secuencias de comandos de Bash para principiantes

Tutorial de Bash Heredoc para principiantes

Cómo instalar Google Chrome en Ubuntu 20.04:Tutorial para principiantes

    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.