GNU/Linux >> Tutoriales Linux >  >> Rocky Linux

Cómo instalar y usar Podman para ejecutar contenedores en Rocky Linux 8

Podman es una plataforma de contenedores gratuita y de código abierto creada para desarrollar, administrar e implementar contenedores y pods en un entorno Linux. Redhat desarrolló Podman en 2018. Es un motor de contenedores que funciona de manera diferente a Docker. Podman no depende de un daemon para funcionar, a diferencia de Docker, que usa Docker CLI y Docker daemon. Ser dependiente de daemon conduce a un único punto de falla.

Podman está diseñado de acuerdo con los estándares OCI (Open Container Initiative) que permiten que Podman interactúe directamente con el kernel, los contenedores y las imágenes. También es más seguro que Docker ya que no requiere acceso de root. Podman se puede usar como reemplazo directo de Docker, ya que ambos cumplen con OCI.

Este artículo le mostrará cómo instalar Podman y usarlo para crear y administrar imágenes y contenedores.

Requisitos

  1. Un servidor basado en Rocky Linux

  2. Un usuario que no sea sudo con privilegios de root.

  3. Asegúrese de que el servidor esté actualizado.

    $ sudo dnf update
    

Instalar Podman

Podman está incluido en container-tools módulo, junto con Buildah y Skopeo. También está disponible en el repositorio de AppStream para Rocky Linux 8. Usaremos el método del módulo.

Instale Podman usando el dnf module comando.

$ sudo dnf module install container-tools

Verifique la versión de Podman para ver si está instalada correctamente.

$ podman --version
podman version 3.2.3

Buscar y descargar imágenes de contenedores

Para buscar la imagen de Nginx, use el siguiente comando.

$ podman search nginx

En el resultado, verá el nombre del registro del que proviene la imagen y una descripción de las imágenes.

Para descargar la imagen, utilice uno de los siguientes comandos.

$ podman pull docker.io/library/nginx

OR

$ podman pull nginx

Puede ver las imágenes descargadas mediante el siguiente comando.

$ podman images
REPOSITORY               TAG         IMAGE ID      CREATED     SIZE
docker.io/library/nginx  latest      f8f4ffc8092c  3 days ago  138 MB

Ejecutar contenedores

Use el siguiente comando para ejecutar un contenedor usando la imagen de Nginx. Hemos nombrado el contenedor como servidor web .

$ podman run -d --name webserver nginx 

Podemos usar la misma imagen para lanzar otro contenedor con un nombre diferente.

$ podman run -d --name webserver2 nginx

Podemos lanzar un número ilimitado de contenedores usando la misma imagen.

Listar y detener contenedores

Para enumerar todos los contenedores en ejecución, use el siguiente comando.

$ podman ps
CONTAINER ID  IMAGE                           COMMAND               CREATED         STATUS             PORTS       NAMES
19b6668bc627  docker.io/library/nginx:latest  nginx -g daemon o...  31 seconds ago  Up 31 seconds ago              webserver
35a286ba5a55  docker.io/library/nginx:latest  nginx -g daemon o...  2 seconds ago   Up 3 seconds ago               webserver2

Detenga el contenedor en ejecución.

$ podman stop webserver
webserver

Verifique si se ha detenido.

$ podman ps
CONTAINER ID  IMAGE                           COMMAND               CREATED             STATUS                 PORTS       NAMES
35a286ba5a55  docker.io/library/nginx:latest  nginx -g daemon o...  About a minute ago  Up About a minute ago              webserver2

Para enumerar todos los contenedores, incluidos los detenidos, debe usar -a bandera.

$ podman ps -a
CONTAINER ID  IMAGE                           COMMAND               CREATED             STATUS                     PORTS       NAMES
19b6668bc627  docker.io/library/nginx:latest  nginx -g daemon o...  2 minutes ago       Exited (0) 35 seconds ago              webserver
35a286ba5a55  docker.io/library/nginx:latest  nginx -g daemon o...  About a minute ago  Up About a minute ago                  webserver2

Iniciar un Contenedor detenido

Utilice el siguiente comando para iniciar un contenedor detenido.

$ podman start webserver
webserver

Verifique si ha comenzado.

$ podman ps
CONTAINER ID  IMAGE                           COMMAND               CREATED        STATUS             PORTS       NAMES
19b6668bc627  docker.io/library/nginx:latest  nginx -g daemon o...  3 minutes ago  Up 16 seconds ago              webserver
35a286ba5a55  docker.io/library/nginx:latest  nginx -g daemon o...  2 minutes ago  Up 2 minutes ago               webserver2

Eliminar contenedor

Debe detener un contenedor antes de eliminarlo.

$ podman stop webserver2

Eliminar el contenedor.

$ podman rm webserver2

Puede eliminar un contenedor en ejecución utilizando --force bandera.

$ podman rm webserver2 --force
35a286ba5a553d5f88e3d9795780f893cfb58bf4a126c4912d1ec56b9d0e5a27

Contenedor de eliminación

Detener y Matar un Contenedor son dos cosas diferentes que eventualmente logran lo mismo. La diferencia es que Detener un contenedor lo cierra correctamente mientras que Matar un contenedor lo finaliza a la fuerza, lo que resulta en la pérdida de datos.

Use el siguiente comando para eliminar el contenedor.

$ podman kill -s 9 webserver2

El comando anterior usa SIGNAL 9 (SIGKILL) opción para matar el contenedor.

Para eliminar todos los contenedores, use --all o -a marca y para eliminar solo el contenedor más reciente, use el --latest o -l bandera.

Borrar imagen

Puede eliminar las imágenes usando el rmi comando.

$ podman rmi registry.redhat.io/rhel8/rsyslog

Puede eliminar varias imágenes separándolas con comas.

$ podman rmi registry.redhat.io/rhel8/rsyslog registry.redhat.io/ubi8/ubi

Para eliminar todas las imágenes de su sistema, utilice -a bandera.

$ podman rmi -a

Ver registros de contenedores

Para ver los registros del contenedor, use el siguiente comando.

$ podman logs webserver
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf
10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
/docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
/docker-entrypoint.sh: Configuration complete; ready for start up
......

Puede restringir los registros a las últimas 5 líneas usando --tail opción.

$ podman logs --tail=5 webserver
2021/10/05 10:13:52 [notice] 1#1: built by gcc 8.3.0 (Debian 8.3.0-6)
2021/10/05 10:13:52 [notice] 1#1: OS: Linux 4.18.0-305.19.1.el8_4.x86_64
2021/10/05 10:13:52 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 262144:262144
2021/10/05 10:13:52 [notice] 1#1: start worker processes
2021/10/05 10:13:52 [notice] 1#1: start worker process 23

De forma predeterminada, no obtendrá ninguna marca de tiempo en los registros. Usa el -t marcar para agregar marcas de tiempo a sus registros.

$ podman logs -t webserver
2021-10-05T09:25:02.026967459Z /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
2021-10-05T09:25:02.026967459Z /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
2021-10-05T09:25:02.033956297Z /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
2021-10-05T09:25:02.043751152Z 10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf
2021-10-05T09:25:02.064561317Z 10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
.....

Inspección de contenedores

Inspeccionar un contenedor imprimirá la información sobre un contenedor.

$ podman inspect webserver
[
    {
        "Id": "19b6668bc6278a66b3ffc98ae1515af25f5bebcd20bf26de803cae41c4485f59",
        "Created": "2021-10-05T09:25:01.784949744Z",
        "Path": "/docker-entrypoint.sh",
        "Args": [
            "nginx",
            "-g",
            "daemon off;"
        ],
        "State": {
            "OciVersion": "1.0.2-dev",
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 4423,
....

El comando predeterminado imprimirá una salida larga en formato JSON. Para filtrar la salida, debe usar el --format opción. Para saber cuándo se inició el contenedor, ejecute el siguiente comando.

$ podman inspect webserver --format '{{.State.StartedAt}}'
2021-10-05 10:13:52.794806322 +0000 UTC

Accediendo a Container Shell

Puede acceder al indicador de Shell de cualquier contenedor usando el exec opción.

$ podman exec -it webserver2 /bin/bash

vainas

Podman tiene una característica única de la que carece Docker. Podman puede crear Pods a partir de contenedores que funcionan juntos. Esto le permite administrar múltiples contenedores en conjunto.

Para crear un Pod, use el siguiente comando.

$ podman pod create --name mypod

Agregue los Contenedores al pod recién creado.

$ podman run --pod mypod --name myimage1 image:latest
$ podman run --pod mypod --name myimage2 diff-image:latest

Ahora puede administrar contenedores usando simples comandos de una línea.

$ podman kill mypod      # Kill all containers
$ podman restart mypod   # Restart all containers
$ podman stop mypod      # Stop all containers
$ podman pod ps			# List all pods
$ podman pod top mypod   # Display running processes in a pod
$ podman pod inspect mypod # Inspect a Pod
$ podman pod rm mypod    # Remove the pod

Conclusión

Esto concluye nuestro tutorial sobre la instalación y el uso de Podman para ejecutar contenedores. Hay muchas cosas que puede hacer con Podman que no hemos cubierto. Si tiene alguna pregunta, publíquela en los comentarios a continuación.


Rocky Linux
  1. Cómo instalar Docker y Docker-Compose en Rocky Linux 8

  2. ¿Qué es Podman y cómo instalar Podman en Linux?

  3. Cómo instalar y usar Podman en Rocky Linux/Alma Linux/Centos 8

  4. Cómo instalar y configurar Elasticsearch en Rocky Linux 8

  5. Cómo instalar y configurar Docker Container en Rocky Linux 8

Cómo instalar Podman en Rocky Linux 8 / AlmaLinux para ejecutar Contenedores

Cómo instalar y usar FFmpeg en Rocky Linux 8

Cómo instalar y configurar OpenCV en Rocky Linux 8.4

Cómo instalar Podman en Rocky Linux 8

Cómo instalar Docker en Rocky Linux y AlmaLinux

Cómo instalar MongoDB en Rocky Linux y AlmaLinux