GNU/Linux >> Tutoriales Linux >  >> Linux

Tutorial de Podman:comience a usar Podman

Este tutorial explica cómo comenzar con Podman en los sistemas operativos Linux. Al final de este tutorial de Podman, aprenderá los conceptos básicos de Podman, como buscar y descargar imágenes, crear un nuevo contenedor a partir de la imagen, ejecutar un contenedor, eliminar un contenedor y crear su propia imagen a partir del contenedor y más.

Antes de comenzar con Podman, asegúrese de haber instalado Podman en su máquina Linux.

  • Qué es Podman y cómo instalar Podman en Linux

Empezar con Podman

Podman proporciona una interfaz de línea de comandos (CLI) similar a Docker motor de contenedor De hecho, Podman pretende ser un reemplazo directo para el cliente docker proporcionado por Docker.

Los comandos de Podman y Docker son casi iguales. Simplemente puede reemplazar docker con podman en la mayoría de los comandos docker. Por ejemplo, docker run el comando se convierte en podman run y docker build se convierte en podman build y así sucesivamente.

Incluso puedes crear un docker alias para podman como a continuación:

$ alias docker=podman

A partir de ahora, puede usar tanto docker y podman comandos al mismo tiempo. Por ejemplo, si ejecuta docker ps, ejecutará automáticamente podman comando ps. ¡La transición de Docker a Podman se ha vuelto mucho más fácil!

1. Obtener ayuda de Podman

Lo primero que probablemente querrá hacer después de instalar cualquier aplicación es consultar su sección de ayuda.

Para ver el manual de ayuda de Podman junto con la lista de subcomandos disponibles y opciones generales, ejecute:

$ podman --help

Para aprender el uso de cualquier subcomando, por ejemplo attach , simplemente haz:

$ podman attach --help

2. Buscar imágenes

Afortunadamente, las imágenes creadas por Docker y Podman son compatibles con el estándar OCI. De modo que Podman puede enviar y extraer imágenes de registros de contenedores como Docker Hub y Quay.io .

Busquemos imágenes de Alpine Linux usando el comando:

$ podman search alpine

Como puede ver, Podman enumera las imágenes de Alpine tanto de Docker hub como de Quay.

Cuando descargas imágenes, puedes elegir desde dónde quieres obtenerlas.

Del mismo modo, puede buscar imágenes basadas en Arch Linux como se muestra a continuación:

$ podman search archlinux

Docker hub and Quay tiene muchas imágenes de diferentes tipos. Ya sea una aplicación o un sistema operativo, encontrará las imágenes de contenedor preconstruidas de estos registros.

3. Descargar imágenes

A los efectos de esta guía, descargaré la imagen base universal (UBI) de Redhat 8.

Para descargar la imagen de Redhat con Podman, ejecute:

$ podman pull redhat/ubi8

Se le pedirá que elija un registro de contenedor desde el que descargar. Elegí el concentrador Docker. Verá una pequeña flecha delante del registro seleccionado.

? Please select an image: 
    registry.fedoraproject.org/redhat/ubi8:latest
    registry.access.redhat.com/redhat/ubi8:latest
  ▸ docker.io/redhat/ubi8:latest
    quay.io/redhat/ubi8:latest

La imagen del contenedor se descargará del registro elegido.

✔ docker.io/redhat/ubi8:latest

Trying to pull docker.io/redhat/ubi8:latest...
Getting image source signatures
Copying blob a50df8fd88fe done  
Copying blob 1cadda38f72d done  
Copying config 0ced1c7c9b done  
Writing manifest to image destination
Storing signatures
0ced1c7c9b23d0e107c7b15d5a0017abbbcf7e64e49a4c9f9efa1b9589ca8b68

Puede descargar y ejecutar diferentes tipos de imágenes independientemente del tipo de distribución que utilice. Por ejemplo, puede descargar y utilizar imágenes de Alpine en un host de Fedora y viceversa.

$ podman tirar alpino

Incluso puede descargar una versión específica de una imagen. El siguiente comando descarga la imagen de la versión 20.04 de Ubuntu:

$ podman pull ubuntu:20.04

Dado que usamos Podman como usuario no root, todas las imágenes de contenedores se almacenan en el directorio de inicio del usuario, es decir, $HOME/.local/share/containers/storage , en lugar de /var/lib/containers .

$ ls ~/.local/share/containers/storage/
cache  libpod  mounts  overlay  overlay-containers  overlay-images  overlay-layers  storage.lock  tmp  userns.lock

4. Ver imágenes

Para ver la lista de imágenes descargadas localmente, ejecute:

$ imágenes podman

Salida de muestra:

REPOSITORY                TAG         IMAGE ID      CREATED      SIZE
docker.io/library/ubuntu  20.04       1318b700e415  7 days ago   75.2 MB
docker.io/redhat/ubi8     latest      0ced1c7c9b23  13 days ago  234 MB
docker.io/library/alpine  latest      d4ff818577bc  6 weeks ago  5.87 MB

Como puede ver, el resultado anterior enumera el nombre del repositorio donde descargamos las imágenes, la etiqueta de la imagen, la identificación de la imagen, cuándo se crea la imagen y el tamaño de la imagen.

Para aquellos que se preguntan, el TAG se refiere a una instantánea particular de la imagen de Ubuntu (por ejemplo, 20.04 y más reciente). TAG es solo un nombre adicional a una imagen local. El ID DE LA IMAGEN (Por ejemplo, 1318b700e415) es el identificador único de la imagen de Ubuntu.

5. Ejecutar contenedores

Se puede iniciar un contenedor usando la etiqueta de imagen o la identificación de imagen.

Comencemos un nuevo contenedor con la imagen UBI de Redhat usando su etiqueta:

$ podman run -it ubi8:latest

Este comando crea un contenedor Redhat 8 usando ubi8:latest imagen y conecta el contenedor a la terminal para que pueda interactuar con él.

Aquí,

  • -i : nos permite hacer una conexión interactiva tomando el estándar en (STDIN) del contenedor.
  • -t :Asigna una nueva Pseudo Terminal dentro del contenedor de Redhat 8.
  • ubi8:latest :Contenedor Redhat 8 con la ETIQUETA "más reciente".

Después de iniciar el contenedor, aterrizará automáticamente en el caparazón del contenedor (símbolo del sistema):

¿Notaste el número 607a288c810d en la salida anterior? Es la identificación del contenedor.

Aviso: Tenga en cuenta que el ID de contenedor y el ID de imagen de Docker son diferentes .

Puedes empezar a jugar con tu Contenedor ahora.

Para volver a la Terminal de su anfitrión sin salir del Contenedor, presione CTRL+p seguido de CTRL+q .

Ahora se lo desconectará del contenedor y lo regresará a la consola de la máquina host. El contenedor seguirá ejecutándose en segundo plano.

Para salir del contenedor, simplemente escriba exit desde la consola del Contenedor y presione la tecla ENTER:

# exit

Este comando cerrará el Contenedor en ejecución.

Si desea ejecutar un contenedor con la IDENTIFICACIÓN DE LA IMAGEN, simplemente reemplace la ETIQUETA de la imagen (ubi8:más reciente) con la Id. de la imagen (0ced1c7c9b23) en el comando anterior:

$ podman run -it 0ced1c7c9b23

Esto iniciará el contenedor Redhat 8.

6. Ejecutar contenedores en segundo plano

También puede ejecutar Contenedores en segundo plano separados.

Para ejecutar un Contenedor en modo separado, usamos -d bandera:

$ podman run -it -d ubi8:latest

Cuando ejecutamos el Contenedor en modo separado, Podman mostrará la ID del Contenedor en la salida estándar.

a4846b2454b1eb63e6d532b0f7ef4a05ca19f965caf9cd0d4a2ce17131a05e29

Verifiquemos los contenedores en ejecución usando el comando:

$ podman ps

Ahora el contenedor se ejecuta en segundo plano.

Puede adjuntarlo como se describe en la siguiente sección.

7. Adjuntar y separar de contenedores

Como se indicó en la sección anterior, puede desconectarse de manera segura de un contenedor en ejecución presionando CTRL+p seguido de CTRL+q . Esto le permitirá volver a la Terminal del host.

Para volver a adjuntarlo al contenedor, primero busque el ID del contenedor en ejecución o su nombre usando podman ps comando:

$ podman ps

Salida de muestra:

CONTAINER ID  IMAGE                         COMMAND     CREATED      STATUS          PORTS       NAMES
607a288c810d  docker.io/redhat/ubi8:latest  /bin/bash   2 hours ago  Up 2 hours ago              cool_cannon

Aquí, 607a288c810d es el ID del contenedor.

Y luego simplemente escribe podman attach Comando seguido de la ID del contenedor como se muestra a continuación:

$ podman attach 607a288c810d

También puede adjuntarlo usando el nombre del contenedor como se muestra a continuación:

$ podman attach cool_cannon

Para desconectarse del Contenedor, simplemente presione CTRL+p y CTRL+q .

8. Ver contenedores en ejecución

Para buscar o enumerar los contenedores en ejecución, escriba:

$ podman ps

Salida de muestra:

CONTAINER ID  IMAGE                            COMMAND     CREATED         STATUS             PORTS       NAMES
e783c0202b7d  docker.io/library/alpine:latest  /bin/sh     37 seconds ago  Up 38 seconds ago              optimistic_murdock

Esto solo enumerará los contenedores en ejecución. Si desea enumerar los contenedores en ejecución y detenidos, use -a bandera.

$ podman ps -a

Salida de muestra:

CONTAINER ID  IMAGE                            COMMAND     CREATED         STATUS                         PORTS       NAMES
56c20497cbcd  docker.io/redhat/ubi8:latest     /bin/bash   3 hours ago     Exited (0) 3 hours ago                     wizardly_albattani
d23672b15cff  docker.io/redhat/ubi8:latest     /bin/bash   3 hours ago     Exited (0) 3 hours ago                     nifty_merkle
89b2c038e1ba  docker.io/redhat/ubi8:latest     /bin/bash   3 hours ago     Exited (0) 2 hours ago                     xenodochial_euler
607a288c810d  docker.io/redhat/ubi8:latest     /bin/bash   2 hours ago     Exited (0) About a minute ago              cool_cannon
e783c0202b7d  docker.io/library/alpine:latest  /bin/sh     43 seconds ago  Up 43 seconds ago                          optimistic_murdock

9. Eliminar contenedor automáticamente después de cerrarlo

Es posible que desee probar un Contenedor y simplemente eliminarlo tan pronto como haya terminado con el Contenedor. Si es así, puede eliminar automáticamente el Contenedor después de cerrarlo usando --rm bandera:

$ podman run -it --rm ubi8:latest

Una vez que salga del Contenedor, se eliminará automáticamente.

10. Iniciar y detener contenedores

Como ya se indicó, podemos crear múltiples Contenedores usando la misma imagen. Esta es una de las mayores ventajas de los contenedores en comparación con las máquinas físicas o virtuales.

Para crear múltiples Contenedores nuevos, podemos usar podman run como se describe en "5. Ejecutar contenedores" sección.

Para iniciar (encender) un Contenedor existente, simplemente hacemos:

$ podman start <container_name>

De manera similar, podemos detener (apagar) un comando en ejecución con el comando:

$ podman stop <container_name>

Déjame mostrarte un ejemplo, para que lo entiendas mejor.

Primero, busque la lista de todos los Contenedores:

$ podman ps -a
CONTAINER ID  IMAGE                            COMMAND     CREATED         STATUS                     PORTS       NAMES
56c20497cbcd  docker.io/redhat/ubi8:latest     /bin/bash   2 days ago      Exited (0) 2 days ago                  wizardly_albattani
d23672b15cff  docker.io/redhat/ubi8:latest     /bin/bash   2 days ago      Exited (0) 2 days ago                  nifty_merkle
89b2c038e1ba  docker.io/redhat/ubi8:latest     /bin/bash   2 days ago      Exited (0) 2 days ago                  xenodochial_euler
607a288c810d  docker.io/redhat/ubi8:latest     /bin/bash   2 days ago      Exited (0) 2 days ago                  cool_cannon
e783c0202b7d  docker.io/library/alpine:latest  /bin/sh     2 days ago      Exited (0) 2 days ago                  optimistic_murdock

El nombre de los Contenedores se muestra en los NOMBRES sección (última columna) de la salida anterior.

Voy a iniciar el Contenedor llamado wizardly_albattani usando el comando:

$ podman start wizardly_albattani

Comprobemos si se ha iniciado:

$ podman ps
CONTAINER ID  IMAGE                         COMMAND     CREATED     STATUS            PORTS       NAMES
56c20497cbcd  docker.io/redhat/ubi8:latest  /bin/bash   2 days ago  Up 7 seconds ago              wizardly_albattani

Sí, subió hace 7 segundos.

Para detener el Contenedor, simplemente haga:

$ podman stop wizardly_albattani

11. Asignar nombre a contenedores

Si observa detenidamente el resultado de los comandos anteriores, Podman asigna nombres aleatorios cada vez que inicia un contenedor. Si no nombra sus Contenedores, Podman los nombrará automáticamente.

Echa un vistazo a la siguiente captura de pantalla. He comenzado el mismo Contenedor con la misma imagen dos veces. Después de salir del contenedor y reiniciarlo por segunda vez, obtiene un nuevo nombre incluso si usé la misma imagen.

Los contenedores obtienen un nuevo nombre cada vez que los cerramos y los iniciamos cada vez.

Sin embargo, puede asignar un nombre estático a los contenedores con --name marca como a continuación:

$ podman run -it -d --name ostechnix_redhat ubi8:latest

El comando anterior creará un nuevo Contenedor en modo separado y lo nombrará como ostechnix_redhat .

Para ver la lista de contenedores en ejecución, hacemos:

$ podman pd

Salida de muestra:

CONTAINER ID  IMAGE                         COMMAND     CREATED        STATUS            PORTS       NAMES
6fa78116dcb7  docker.io/redhat/ubi8:latest  /bin/bash   4 seconds ago  Up 5 seconds ago              ostechnix_redhat

¿Notaste el nombre del Contenedor? Le hemos dado un nombre personalizado (es decir, ostechnix_redhat ) al Contenedor.

12. Cree imágenes personalizadas

Podman no es solo para descargar y ejecutar contenedores desde imágenes preconfiguradas. También puede crear sus imágenes personalizadas a partir de imágenes existentes.

Primero, inicie un contenedor existente o ejecute uno nuevo.

Voy a crear un nuevo contenedor de Ubuntu:

$ podman run -it 1318b700e415

Ahora estás dentro del Contenedor.

[email protected]:/#

Simplemente instale, actualice o elimine cualquier aplicación en el Contenedor.

A los efectos de esta guía, instalaré el servidor web Apache:

[email protected]:/# apt update
[email protected]:/# apt install apache2 -y
[email protected]:/# service apache2 start

Una vez que haya terminado, sepárelo del contenedor y regrese a la terminal del host presionando CTRL+p y CTRL+q .

¡Tenga en cuenta que el Contenedor todavía se está ejecutando en segundo plano!

Ahora, construya la Imagen desde el Contenedor existente usando el comando:

$ podman commit b871b0fd5810 ostechnix/ubuntu_apache

Aquí,

  • b871b0fd5810 - ID de contenedor de Ubuntu.
  • ostechnix – Nombre del usuario que creó el contenedor.
  • ubuntu_apache – Nombre de la imagen creada por el usuario ostechnix.

Ahora compruebe si se crea la nueva imagen enumerando las imágenes disponibles:

$ podman images

Salida de muestra:

REPOSITORY                         TAG         IMAGE ID      CREATED         SIZE
localhost/ostechnix/ubuntu_apache  latest      6c9b2fb66400  25 seconds ago  222 MB
docker.io/library/ubuntu           20.04       1318b700e415  10 days ago     75.2 MB
docker.io/redhat/ubi8              latest      0ced1c7c9b23  2 weeks ago     234 MB
docker.io/library/alpine           latest      d4ff818577bc  7 weeks ago     5.87 MB

Como puede ver en el resultado anterior, una nueva imagen llamada ubuntu_apache se crea.

Empecemos un nuevo Contenedor con esta imagen:

$ podman run -it --rm --name apache_webserver -p 8080:80 localhost/ostechnix/ubuntu_apache

Aquí, estoy ejecutando Container con una imagen recién creada en el paso anterior. También estoy mapeando el puerto local 8080 en el sistema local al puerto 80 dentro del contenedor.

Una vez que se inicia el Contenedor, asegúrese de que el servidor web Apache se inicie con el comando:

[email protected]:/# service apache2 start

Ahora, abra su navegador en su sistema host y navegue a http://localhost:8080 para verificar si el servidor web Apache se está ejecutando en el Contenedor.

13. Ver registros de contenedores

Para ver todo lo que hizo dentro de su Contenedor, simplemente puede verificar los registros del Contenedor usando el comando:

$ podman logs apache_webserver

14. Eliminar contenedores

Asegúrese de que los Contenedores estén detenidos:

$ podman stop ostechnix_redhat

Después de detener el Contenedor, elimínelo usando el comando:

$ podman rm ostechnix_redhat

Del mismo modo, elimine todos los Contenedores uno por uno como se muestra arriba.

Eliminar varios contenedores uno por uno puede ser una tarea tediosa si tiene una gran cantidad de contenedores. En lugar de eliminar uno tras otro, puede eliminar todos a la vez. ¡Sólo sé cuidadoso! ¡No hay forma de recuperar los Contenedores eliminados!

Para eliminar todos los contenedores detenidos de una sola vez, simplemente ejecute:

$ podman container prune

Escribe "Y" para confirmar y presione ENTER tecla para borrar los contenedores.

WARNING! This will remove all non running containers.
Are you sure you want to continue? [y/N] y
2124a1fbc85a6be7d516e747723129bd7bb9c39d3a54951c9a81407d30ded1ab
54884f3375947026d4e87b99cb3a09e114c89120b101f5c8c1e614aca963975c
56c20497cbcdd9599c2fa729277ecf679ac29f79a0b06af3ae1a135726465ba7
607a288c810d2e605d9ba7590f8f7558ef5f96e87897a1cdde471ae9a74b36ad
69bbd87b44cb6c9a582749f4ad010b6b273e65f9fe424058fdc0bc55b188d7e4
89b2c038e1baf6ac59f0da8e43a7efedc7ba73a18ed8d704c879ffdbc7eb7f28
a4846b2454b1eb63e6d532b0f7ef4a05ca19f965caf9cd0d4a2ce17131a05e29
aa14879baf0919323730539dd949231d5bb89ca4207dd36c02a741316e6d0f18
b871b0fd5810f55e75bdd480d5fb34b09b0e293604f88896002a9368a607bf7e
d23672b15cffc0a774227dc6b457a8bff5347073a112f6729d63ddf400f19dc7
e783c0202b7d7a6664e731feeff4bdb57a79df79080046ed2b728df4bce789d2
ebfd6210a6beedce43af0c41296e329d416128752ab603abd44c73117bf5dfd0

15. Eliminar imágenes

¡Puede eliminar las imágenes que ya no son necesarias!

Enumere todas las imágenes descargadas con el comando:

$ podman images

Salida de muestra:

REPOSITORY                         TAG         IMAGE ID      CREATED         SIZE
localhost/ostechnix/ubuntu_apache  latest      6c9b2fb66400  37 minutes ago  222 MB
docker.io/library/ubuntu           20.04       1318b700e415  10 days ago     75.2 MB
docker.io/redhat/ubi8              latest      0ced1c7c9b23  2 weeks ago     234 MB
docker.io/library/alpine           latest      d4ff818577bc  7 weeks ago     5.87 MB

Ahora, elimine una imagen usando su ID de imagen o nombre, como se muestra a continuación:

$ podman rmi 6c9b2fb66400

Salida de muestra:

Untagged: localhost/ostechnix/ubuntu_apache:latest
Deleted: 6c9b2fb66400138738ad12643d8461fbbb859f33d3be3c35181bb9ee9b11748d

Del mismo modo, elimine todas las demás imágenes no utilizadas,

Aviso: No puede eliminar una imagen que esté siendo utilizada actualmente por contenedores en ejecución o detenidos.

Conclusión

En este completo tutorial de Podman, brindamos 15 ejemplos prácticos sobre cómo comenzar con Podman en Linux. Si eres desarrollador, aprender Podman es muy importante para avanzar en tu carrera. Aprende a usar Podman a fondo. ¡Vale la pena tu tiempo!


Linux
  1. Comience con NetworkManager en Linux

  2. Cómo comenzar con un servidor en la nube de FreeBSD

  3. Comience con los servidores en la nube

  4. Comience con Magento en Debian 10

  5. Comience con Tasksel en Debian

Primeros pasos con Docker Compose en Linux

De Docker Compose a Kubernetes con Podman

Cómo reemplazar Docker con Podman en una Mac

Tutorial de introducción a Azure Docker

Cómo comenzar con Arch Linux

Cómo comenzar con Midnight Commander en 2022