Cómo administrar contenedores usando Podman y Skopeo en Rhel 8

Cómo administrar contenedores usando Podman y Skopeo en Rhel 8

Uno de los desafíos que enfrentaron los desarrolladores en el pasado es lograr que las aplicaciones se ejecuten de manera confiable en múltiples entornos informáticos. A menudo, las solicitudes no se ejecutaron como se esperaba o encontró errores y falló por completo. Y ahí es donde el concepto de contenedores nació.

¿Qué son las imágenes de contenedores??

Envase Las imágenes son archivos estáticos que se envían con código ejecutable que se ejecuta en un entorno aislado. Una imagen de contenedor comprende bibliotecas de sistemas, dependencias y otras configuraciones de plataforma que la aplicación necesita para ejecutar en entornos diversos.

Red Hat Linux Proporciona un conjunto de herramientas de contenedores útiles que puede aprovechar para trabajar directamente con los contenedores de Linux utilizando comandos de Docker requeridos. Éstas incluyen:

  • Podman - Este es un motor de contenedor de demonio menos para correr y administrar OCI contenedores en modo raíz o sin raíces. Podman es parecido a Estibador y tiene las mismas opciones de comando excepto que Estibador es un demonio. Puede tirar, ejecutar y administrar imágenes de contenedores usando podman de la misma manera que lo harías con Estibador. Podman viene con muchas características avanzadas, se integra completamente con sistemas, y ofrece soporte para el espacio de nombres de usuarios que incluye ejecutar contenedores sin la necesidad de un usuario root.
  • Skopeo: Esta es una herramienta de línea de comandos utilizada para copiar imágenes de contenedores de un registro a otro. Puedes usar Skopeo Para copiar imágenes hacia y desde un host en particular, así como copiar imágenes a otro registro o entorno de contenedores. Además de copiar imágenes, puede usarlo para inspeccionar imágenes de varios registros y usar firmas para crear y verificar imágenes.
  • Construcción: Este es un conjunto de herramientas de línea de comandos utilizadas para crear y administrar contenedores OCI imágenes usando Estibador archivos.

En este artículo, nos centraremos en administrar contenedores utilizando podman y Skopeo.

Buscar imágenes de contenedores desde un registro remoto

El búsqueda de podman El comando le permite buscar registros remotos seleccionados para imágenes de contenedores. La lista predeterminada de registros se define en el registros.confusión archivo ubicado en el /etc/contenedores/ directorio.

Los registros se definen por 3 secciones.

  • [Registros.buscar] - Esta sección especifica los registros predeterminados que podman puede buscar imágenes de contenedores. Busca la imagen solicitada en el registro.acceso.sombrero rojo.comunicarse, registro.sombrero rojo.IO, y estibador.IO registros.
Registros predeterminados
  • [Registros.inseguro]- Esta sección especifica registros que no implementan el cifrado TLS I.e registros inseguros. Por defecto, no se especifican entradas.
Registros inseguros
  • [Registros.bloquear] - Esto bloquea o niega el acceso a los registros especificados desde su sistema local. Por defecto, no se especifican entradas.
Bloquea los registros

Como regular (sin raiz) Usuario que ejecuta el comando Podman, puede definir el suyo propio registros.confusión Archivo en su directorio de inicio ($ Inicio/.config/contenedores/registros.confusión) anular la configuración de todo el sistema.

Reglas al especificar registros

Como especifica los registros, tenga en cuenta lo siguiente:

  • Cada registro debe estar encerrado por citas individuales.
  • Los registros se pueden especificar utilizando un nombre de host o una dirección IP.
  • Si se especifican múltiples registros, entonces deben estar separados por comas.
  • Si un registro utiliza un puerto no estándar, ya sea el puerto TCP Ports 443 para Secure y 80 para inseguro, el número de puerto debe especificarse junto con el nombre del registro e.gramo. registro.ejemplo.com: 5566.

Para buscar en un registro de una imagen de contenedor utilizando la sintaxis:

# Registro de búsqueda de Podman/Container_image 

Por ejemplo, para buscar un Rehacer imagen en el registro.sombrero rojo.IO registro, invocar el comando:

# Registro de búsqueda de Podman.sombrero rojo.IO/Redis 
Registro de búsqueda para la imagen del contenedor

Para buscar un Mariada Ejecutar la imagen del contenedor.

# Registro de búsqueda de Podman.sombrero rojo.io/mariadb 
Buscar imagen de contenedor de mariadb

Para obtener una descripción elaborada de una imagen de contenedor, use el --sin truncar opción antes del nombre de la imagen del contenedor de los resultados que obtiene. Por ejemplo, intentaremos obtener una descripción detallada de la imagen del contenedor Mariadb como se muestra:

# Búsqueda de Podman-Registro de No-Trunc.sombrero rojo.IO/RHEL8/MARIADB-103 
Descripción de la lista de la imagen del contenedor de mariadb

Tirar de imágenes de contenedores

Tirar o recuperar imágenes de contenedores de un registro remoto requiere que primero se autentique antes de cualquier otra cosa. Por ejemplo, para recuperar la imagen del contenedor Mariadb, primero inicie sesión en el registro Redhat:

# Podman Iniciar sesión 

Proporcione su nombre de usuario y contraseña y presione 'INGRESAR'En tu teclado. Si todo va bien, debe recibir un mensaje de confirmación de que el inicio de sesión en el registro fue exitoso.

Iniciar sesión! 

Ahora, puede extraer la imagen con la sintaxis que se muestra:

# Podman Pull [:]/[/]: 

El se refiere al host o registro remoto que proporciona un repositorio de imágenes de contenedores en el TCP . El y el Especifique colectivamente una imagen de contenedor basada en el en el registro. Finalmente, el La opción especifica la versión de la imagen del contenedor. Si no se especifica ninguno, se usa la etiqueta predeterminada, más reciente -.

Siempre se recomienda agregar registros de confianza, que son aquellos que proporcionan cifrado y no permiten que los usuarios anónimos generen cuentas con nombres aleatorios.

Para extraer la imagen Mariadb, ejecute el comando:

# Registro de Pull Pull.sombrero rojo.IO/RHEL8/MARIADB-103 
  • El - registro.sombrero rojo.IO
  • El - rhel8
  • El - Mariada
  • El - 103
Tirar de la imagen de mariadb

Para la extracción posterior del contenedor, no se requiere inicio de sesión más, ya que ya está autenticado. Para tirar de un Rehacer Imagen del contenedor, simplemente ejecute:

# Registro de Pull Pull.sombrero rojo.IO/RHSCL/REDIS-5-RHEL7 
Pull Redis Container Imagen

Listado de imágenes de contenedores

Una vez que haya terminado de extraer las imágenes, puede ver las imágenes actualmente existentes en su host ejecutando el comando de imágenes de Podman.

# Imágenes de Podman 
Lista de imágenes de contenedores

Inspeccionar imágenes de contenedores

Antes de ejecutar un contenedor, siempre es una buena idea sondear la imagen y comprender lo que hace. El Podman inspeccionar El comando imprime un mar de metadatos sobre el contenedor, como el sistema operativo y la arquitectura.

Para inspeccionar una imagen, ejecute el Podman inspeccionar Comando seguido de la ID de imagen o el repositorio.

# Podman Inspect ID de imagen o # Podman Inspect Repository 

En el siguiente ejemplo, estamos inspeccionando el Mariada envase.

# Podman Inspect Registry.sombrero rojo.IO/RHEL8/MARIADB-103 
Inspeccionar imágenes de contenedores mariadb

Para extraer metadatos específicos para un contenedor, pase el --formato Opción seguida de los metadatos y la identidad del contenedor (ID de imagen o nombre).

En el ejemplo a continuación, estamos recuperando información sobre la arquitectura y la descripción del contenedor base Rhel 8 que cae debajo del 'Etiquetas' sección.

# Podman Inspect --Format = '.Etiquetas.Arquitectura 'ID de imagen # Podman Inspect --Format =' .Etiquetas.Descripción 'ID de imagen 
Obtener información sobre la arquitectura de contenedores

Para inspeccionar una imagen remota desde otro registro, use el Skopeo inspeccionar dominio. En el siguiente ejemplo, estamos inspeccionando una imagen de inicio de Rhel 8 alojada en Estibador.

# Skopeo Inspect Docker: // Registro.sombrero rojo.IO/RHEL8-BETA/RHEL-INIT 
Inspeccione la imagen remota desde el registro de Docker

Etiquete imágenes de contenedores

Como habrás señalado, los nombres de imágenes suelen ser de naturaleza genérica. Por ejemplo, la imagen Redis está etiquetada:

registro.sombrero rojo.IO/RHSCL/REDIS-5-RHEL7 

Etiquetar imágenes les da un nombre más intuitivo para comprender mejor lo que contienen. Utilizando el etiqueta de podman Comando, puede crear una etiqueta de imagen que es esencialmente un alias para un nombre de imagen que comprende diferentes partes.

Estos son:

registro/nombre de usuario/nombre: etiqueta 

Por ejemplo, para cambiar el nombre genérico de la imagen Redis que tiene una ID de 646F2730318C , Ejecutaremos el comando:

# Etiqueta de Podman 646F2730318C Myredis 

Para agregar una etiqueta al final, agregue un colon completo seguido del número de etiqueta:

# Etiqueta de Podman 646F2730318C Myredis: 5.0 

Sin agregar el número de etiqueta, solo se le asignará el atributo más reciente.

Establecer el nombre de la imagen del contenedor de Redis

Ejecutando imágenes de contenedores

Para ejecutar un contenedor, use el Podman Run dominio. Por ejemplo:

# Podman ejecutar image_id 

Para ejecutar un contenedor en silencio en segundo plano como servicio de demonio, use el -d opción como se muestra.

# Podman Run -d Image_ID 

Por ejemplo, para ejecutar el rehacer Imagen con ID 646F2730318C, Invocaremos el comando:

# Podman Run -D 646F2730318C 
Ejecutar imágenes de contenedores Redis

Si está ejecutando un contenedor basado en un sistema operativo como Rhel 8 Imagen base, puede obtener acceso al shell utilizando el -él directiva. El -i La opción crea una sesión interactiva mientras el -T genera una sesión terminal. El --nombre La opción establece el nombre del contenedor en mybash mientras que el es el ECBC6F53BBA0 ID de imagen de la imagen base.

# Podman Run -it - -Name = MyBash ECBC6F53BBA0 

A partir de entonces, puede ejecutar cualquier comando de shell. En el ejemplo a continuación, estamos verificando la versión del sistema operativo de la imagen del contenedor.

# Cat /Etc /OS Lanzamiento 
Verificar la versión del sistema operativo de la imagen del contenedor

Para salir del contenedor, simplemente invoque el comando de salida.

# salida 

Una vez que sale el contenedor, se detiene automáticamente. Para comenzar el contenedor nuevamente, use el inicio de Podman comando con el -ai bandera como se muestra.

# Podman Start -ai mybash 

Una vez más, esto le da acceso a la carcasa.

Iniciar imágenes de contenedores

Listado de imágenes de contenedores

Para enumerar actualmente los contenedores, use el Podman PS comando como se muestra.

# Podman PS 
Lista de ejecutar imágenes de contenedores

Para ver todos los contenedores, incluidos aquellos que han salido después de ejecutar, use el comando:

# Podman PS -A 
Ver todas las imágenes de contenedores

Configurar imágenes de contenedor para comenzar automáticamente en el servicio Systemd

En esta sección, nos centramos en cómo se puede configurar un contenedor para ejecutarse directamente en un sistema RHEL como un servicio Systemd.

Primero, obtenga su imagen preferida. En este caso, hemos sacado el Rehacer Imagen de Docker Hub:

# Podman Pull Docker.IO/Redis 

Si tiene Selinux ejecutándose en su sistema, debe activar el contenedor_manage_cgroup booleano para ejecutar contenedores con system.

# setsebool -p contenedor_manage_cgroup en 

A partir de entonces, ejecute la imagen del contenedor en segundo plano y asigna a su nombre de imagen preferido. En este ejemplo, hemos llamado nuestra imagen Redis_Server y mapearon el puerto 6379 desde el contenedor a nuestro Rhel 8 anfitrión

# Podman Run -d - -Name Redis_Server -P 6379: 6379 Redis 
Ejecutar la imagen del contenedor en el fondo

A continuación, vamos a crear un system Archivo de configuración de la unidad para Redis en el /etc/systemd/system/ directorio.

# vim/etc/systemd/system/redis-continer.servicio 

Pegue el contenido a continuación en el archivo.

[Unidad] Descripción = Redis Container [servicio] reinsart = Always Execstart =/usr/bin/Podman Start -a redis_server execstop =/usr/bin/Podman.objetivo 

Guardar y salir del archivo.

A continuación, configure el contenedor para comenzar automáticamente en arranque.

# SystemCTL Habilitar Redis-Container.servicio 

A continuación, inicie el contenedor y verifique su estado de ejecución.

# SystemCTL Start Redis-Container.Servicio # SystemCTL Status Redis-Container.servicio 
Verificar el estado de la imagen del contenedor

Configurar el almacenamiento persistente para imágenes de contenedores

Al ejecutar contenedores, es prudente configurar el almacenamiento externo persistente en el host. Esto proporciona una copia de seguridad en caso de que el contenedor se bloquee o se elimine accidentalmente.

Para persistir los datos, vamos a mapear un directorio ubicado en el host a un directorio dentro del contenedor.

$ Podman Run --Privileged -IT -V/Var/Lib/Containers/Backup_storage:/Mnt Registry.sombrero rojo.IO/UBI8/UBI/BIN/BASH 

El --privilegiado La opción se pasa cuando Selinux está configurado para hacer cumplir. El -V La opción especifica el volumen externo que se encuentra en el host. El volumen del contenedor aquí es el /MNT directorio.

Una vez que hayamos accedido al shell, vamos a crear un archivo de muestra pruebas.TXT en el /MNT directorio como se muestra.

$ Echo "Esto prueba el almacenamiento externo persistente"> /mnt /prueba.TXT 

Entonces lo haremos salida el contenedor y verificar si el archivo existe en el almacenamiento externo que reside en el host

# Salir # Cat/Var/Lib/Containers/Backup_storage/Testing.TXT 

ProducciónEsto prueba el almacenamiento externo persistente.

Configurar el almacenamiento persistente para contenedores

Detener y eliminar contenedores

Una vez que haya terminado de ejecutar su contenedor, puede detenerlo con el parada de podman comando seguido de la recipiente que puedes obtener del Podman PS dominio.

# Podman Stop Container-ID 
Imagen de detención de contenedores

Para eliminar los contenedores que ya no necesita, primero, asegúrese de detenerlo y luego invocar el Podman RM comando seguido de la identificación o nombre del contenedor como opción.

# PODMAN RM Container-ID 

Para eliminar varios contenedores en un comando, especifique el contenedor IDS separado por un espacio.

# Podman RM Container-ID-ID-1 Container-ID-2 Container-ID-3 
Eliminar la imagen del contenedor

Para borrar todos sus contenedores, ejecute el comando:

# Podman RM -A 
Borrar todos los contenedores

Eliminar una imagen

Para eliminar una imagen, primero, asegúrese de que todos los contenedores generados de las imágenes se detengan y eliminen como se discute en el subtópico anterior.

A continuación, continúa y ejecuta el Podman -RMI comando seguido de la identificación de la imagen como se muestra:

# Podman -Rmi Image -ID 
Quita la imagen

Conclusión

Esto concluye este capítulo sobre la gestión y el trabajo con contenedores en Rhel 8. Esperamos que esta guía proporcione una comprensión decente de los contenedores y cómo puede interactuar y administrarlos en su Rhel sistema utilizando podman y Skopeo.