GNU/Linux >> Tutoriales Linux >  >> Linux

Agregue estas 4 herramientas a su caja de herramientas de contenedor de Linux

Cuando necesite la herramienta adecuada, no hay nada como ir a su ferretería local y caminar por los pasillos. Es genial recorrer el pasillo de herramientas manuales y ver todos los destornilladores, martillos, llaves hexagonales, cintas métricas y más. Justo cuando crees que has descubierto la herramienta adecuada, te asalta un pensamiento:si puedo hacerlo con una herramienta manual, ¡realmente puedo hacerlo con la herramienta eléctrica perfecta!

Al menos eso es lo que me dice mi esposa, y verás, ella es la persona útil en nuestra familia. Mis herramientas preferidas son las herramientas tecnológicas. Dame un pasillo de tarjetas de video en una tienda de computadoras y seré un campista feliz.

Recientemente hice una demostración en la reunión de la comunidad de Podman mostrando algunas de las nuevas herramientas de contenedores más brillantes que hemos desarrollado para Podman y Buildah. Hemos tenido muchos anuncios importantes con Podman v3.0, así que pensé que algunas de estas herramientas podrían haber quedado en segundo plano. Como recibí buenos comentarios de esa demostración, sentí que una publicación de seguimiento también podría ser útil. Así que profundicemos y saquemos a relucir estas nuevas y brillantes herramientas de contenedor.

Cambia el primer FROM en tu Containerfile

Hay un nuevo --from opción en el buildah bud comando que pronto llegará a Podman v3.0. Esta opción le permite reemplazar el valor asociado con el primero, y solo el primero, DE declaración en el Containerfile. Por ejemplo, si tenemos este Containerfile:

# cat ~/Containerfile.multifrom
FROM fedora as builder
FROM busybox
COPY --from=builder /bin/df /tmp/df_tester

Podemos hacer una ejecución inicial y mostrará que usamos fedora imagen del contenedor. Luego el busybox se usa la imagen y finalmente se copian los archivos de fedora 's /bin/df directorio en el busybox imágenes' /tmp/df_tester directorio.

# buildah bud -t multi -f ~/Containerfile.multifrom .
STEP 1: FROM fedora AS builder
Resolved "fedora" as an alias (/etc/containers/registries.conf.d/shortnames.conf)
Getting image source signatures
Copying blob 157ab8011454 done  
Copying config 9f2a560376 done  
Writing manifest to image destination
Storing signatures
--> 9f2a5603764
STEP 2: FROM busybox
Resolved "busybox" as an alias (/root/.config/containers/short-name-aliases.conf)
Getting image source signatures
Copying blob 4c892f00285e done  
Copying config 22667f5368 done  
Writing manifest to image destination
Storing signatures
STEP 3: COPY --from=builder /bin/df /tmp/df_tester
STEP 4: COMMIT multi
Getting image source signatures
Copying blob 6b245f040973 skipped: already exists  
Copying blob 9b68b051b385 done  
Copying config 187c956137 done  
Writing manifest to image destination
Storing signatures
--> 187c9561378
187c9561378efb043dfd0e8fa9c0afbdc0cf2faeb244e0dd7f2003321feab524

Ahora imagina una situación más real, una en la que tu DE La declaración apunta a una imagen personalizada con una variedad de etiquetas para diferentes versiones de la imagen. Sería bueno, especialmente en un entorno de CI, simplemente pasar la imagen del contenedor que desea usar en la próxima ejecución en lugar de volver a crear todo el Dockerfile. Ese es el trabajo que --from llena.

En este ejemplo, ejecutaremos el mismo bud comando, pero esta vez agregaremos --from alpine:latest .

# buildah bud -t multi -f ~/Containerfile.multifrom --from alpine:latest .
STEP 1: FROM alpine:latest AS builder
Resolved "alpine" as an alias (/etc/containers/registries.conf.d/shortnames.conf)
Getting image source signatures
Copying blob 4c0d98bf9879 done  
Copying config e50c909a8d done  
Writing manifest to image destination
Storing signatures
--> e50c909a8df
STEP 2: FROM busybox
STEP 3: COPY --from=builder /bin/df /tmp/df_tester
STEP 4: COMMIT multi
Getting image source signatures
Copying blob 6b245f040973 skipped: already exists  
Copying blob b498f23d5c32 done  
Copying config d7e92107ed done  
Writing manifest to image destination
Storing signatures
--> d7e92107edf
d7e92107edf42f046f6a7faddade4825ef1c2361ae21eb0ac3694871dcdb496c

Puedes ver que el alpine:latest La imagen del contenedor se usó por primera vez, y ahora después del busybox se creó la imagen, los archivos de /bin/df de alpine se copiaron en /tmp/df_tester directorio en busybox . El valor del primer FROM declaración en el Containerfile fue reemplazada con el argumento que pasamos con el --from opción.

[ También le puede interesar leer: Contenedores sin raíz con Podman ]

Aceptar entrada durante una compilación

Otra herramienta nueva es --stdin opción que va junto con buildah bud o podman build (a partir de Podman v3.0). Cuando usa esta opción, el proceso de compilación se detendrá y solicitará una entrada de teclado si el proceso que se ejecuta durante el procedimiento de compilación lo solicita.

Eche un vistazo a este archivo contenedor:

# cat /root/Containerfile.stdin
FROM ubi8
RUN yum install iputils
RUN touch /tmp/done

Este Containerfile usa el ubi8 imagen y luego instala iputils . Como probablemente puedas adivinar, el yum El comando nos pedirá que verifiquemos la instalación de iputils . Veamos qué sucede sin --stdin opción en juego.

# cat /root/Containerfile.stdin
FROM ubi8
RUN yum install iputils
RUN touch /tmp/done

# cat /root/Containerfile.stdin
FROM ubi8
RUN yum install iputils
RUN touch /tmp/done

# buildah bud -t mystdin -f ~/Containerfile.stdin .
STEP 1: FROM ubi8
Resolved "ubi8" as an alias (/etc/containers/registries.conf.d/shortnames.conf)
Getting image source signatures
Copying blob d9e72d058dc5 done  
Copying blob cca21acb641a done  
Copying config 3269c37eae done  
Writing manifest to image destination
Storing signatures
STEP 2: RUN yum install iputils
Updating Subscription Management repositories.
Unable to read consumer identity

This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.

Red Hat Universal Base Image 8 (RPMs) - BaseOS  2.5 MB/s | 774 kB     00:00    
Red Hat Universal Base Image 8 (RPMs) - AppStre 7.6 MB/s | 5.0 MB     00:00    
Red Hat Universal Base Image 8 (RPMs) - CodeRea  75 kB/s |  13 kB     00:00    
Dependencies resolved.
================================================================================
 Package        Architecture  Version                 Repository           Size
================================================================================
Installing:
 iputils        x86_64        20180629-2.el8          ubi-8-baseos        149 k

Transaction Summary
================================================================================
Install  1 Package

Total download size: 149 k
Installed size: 361 k
Is this ok [y/N]: Operation aborted.
error building at STEP "RUN yum install iputils": error while running runtime: exit status

Cuando yum instalado iputils , solicitó una confirmación y falló porque nunca recibió una respuesta. Ahora veamos qué sucede con --stdin opción en juego.

# buildah bud -t mystdin --stdin -f ~/Containerfile.stdin .
STEP 1: FROM ubi8
STEP 2: RUN yum install iputils
Updating Subscription Management repositories.
Unable to read consumer identity

This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.

Red Hat Universal Base Image 8 (RPMs) - BaseOS  2.8 MB/s | 774 kB     00:00    
Red Hat Universal Base Image 8 (RPMs) - AppStre 7.5 MB/s | 5.0 MB     00:00    
Red Hat Universal Base Image 8 (RPMs) - CodeRea  86 kB/s |  13 kB     00:00    
Dependencies resolved.
================================================================================
 Package        Architecture  Version                 Repository           Size
================================================================================
Installing:
 iputils        x86_64        20180629-2.el8          ubi-8-baseos        149 k

Transaction Summary
================================================================================
Install  1 Package

Total download size: 149 k
Installed size: 361 k
Is this ok [y/N]: y

No se ve tan bien en un blog como en persona, pero el proceso de creación se detiene en la línea Is this ok [y/N]: e ingresé el carácter y y la compilación continuó (ver el resultado a continuación).

Downloading Packages:
iputils-20180629-2.el8.x86_64.rpm               972 kB/s | 149 kB     00:00    
--------------------------------------------------------------------------------
Total                                           952 kB/s | 149 kB     00:00    
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                        1/1
  Installing       : iputils-20180629-2.el8.x86_64                          1/1
  Running scriptlet: iputils-20180629-2.el8.x86_64                          1/1
  Verifying        : iputils-20180629-2.el8.x86_64                          1/1
Installed products updated.

Installed:
  iputils-20180629-2.el8.x86_64                                                

Complete!
STEP 3: RUN touch /tmp/done
STEP 4: COMMIT mystdin
Getting image source signatures
Copying blob 92538e92de29 skipped: already exists  
Copying blob eb7bf34352ca skipped: already exists  
Copying blob f9ed641975cb done  
Copying config b2742f08a7 done  
Writing manifest to image destination
Storing signatures
--> b2742f08a7a
b2742f08a7ae2cb76a2cd0c481f2d2d66b303379d23e5260577ea09476a8a486

Este es otro ejemplo simplista, especialmente porque podría agregar un -y argumento del yum dominio. Aún así, puede haber otros comandos que le gustaría ejecutar durante el proceso de compilación en los que le gustaría obtener información más importante fácilmente.

Encuentre las etiquetas para una imagen de contenedor

La siguiente herramienta, que es relativamente nueva en Podman, muestra todas las etiquetas de una imagen de contenedor en un registro. Uso imágenes en quay.io para Buildah, Podman y Skopeo, y a veces quiero usar una versión particular de uno de los proyectos y no puedo recordar cuál está disponible. Si está familiarizado con Skopeo, funciona muy bien en este espacio. Pero si no ha instalado Skopeo localmente, o no puede por alguna razón, entonces el nuevo --list-tags opción para la podman search el mando es tu billete.

Entonces, veamos todas las etiquetas que tiene la imagen estable de Podman en quay.io:

# podman search --list-tags quay.io/podman/stable
NAME                   TAG
quay.io/podman/stable  v1.4.4
quay.io/podman/stable  v1.4.2
quay.io/podman/stable  v1.5.1
quay.io/podman/stable  v1.5.0
quay.io/podman/stable  v1.6.2
quay.io/podman/stable  auto
quay.io/podman/stable  v1.6
quay.io/podman/stable  v1.9.0
quay.io/podman/stable  v1.9.1
quay.io/podman/stable  v2.0.2
quay.io/podman/stable  v2.0.6
quay.io/podman/stable  v2.1.1
quay.io/podman/stable  master
quay.io/podman/stable  latest

Rápido, fácil y práctico.

Uso de la imagen del contenedor de Skopeo

Esta herramienta es una especie de ying hasta las últimas herramientas yang . El proyecto Skopeo está lleno de muchas herramientas para usar con imágenes de contenedores. También le mostrará la lista de etiquetas que tiene una imagen en un registro. Skopeo también puede mostrar información sobre un registro, permitirle copiar una imagen de contenedor entre mecanismos de almacenamiento, incluidos registros, sincronizar un registro de contenedor, eliminar una imagen de un registro y más.

Ahora no voy a sumergirme en cada uno de estos comandos de Skopeo aquí. Solo voy a hacer la función de búsqueda para mostrar las etiquetas. El giro es que solo usaré Podman para ejecutar quay.io/skopeo/stable:latest imagen, eliminando así la necesidad de tener Skopeo instalado y aún tener todas sus funciones disponibles.

Entonces, enumeremos las etiquetas de quay.io/podman/stable:latest imagen de nuevo, pero esta vez a través de la imagen del contenedor de Skopeo:

# podman run quay.io/skopeo/stable:latest list-tags docker://quay.io/podman/stable
Trying to pull quay.io/skopeo/stable:latest...
Getting image source signatures
Copying blob 6629904ed3b7 done  
Copying blob 2b74ed94761c done  
Copying blob 692512e477a1 done  
Copying blob 166a3cbbffd1 done  
Copying blob b1e90be38d32 done  
Copying blob a5dc7d6cfd62 done  
Copying blob a3ed95caeb02 done  
Copying blob a3ed95caeb02 done  
Writing manifest to image destination
Storing signatures
{
    "Repository": "quay.io/podman/stable",
    "Tags": [
        "v1.4.4",
        "v1.4.2",
        "v1.5.1",
        "v1.5.0",
        "v1.6.2",
        "auto",
        "v1.6",
        "v1.9.0",
        "v1.9.1",
        "v2.0.2",
        "v2.0.6",
        "v2.1.1",
        "master",
        "latest"
    ]
}

La primera vez que ejecuta este comando, es más lento que el equivalente de Podman ya que incurre en el costo del skopeo imagen del contenedor que se extrae. Después de eso, la velocidad es equivalente en ejecuciones secundarias, y luego puede ejecutar cualquier otro comando de Skopeo que desee también.

Te dejaré explorar más por tu cuenta y te sugiero que comiences tu exploración con Cómo ejecutar Skopeo en un contenedor de Valentin Rothberg. . Creo que la imagen del contenedor de Skopeo es la herramienta más brillante en mi caja de herramientas de contenedores.

[ ¿Empezando con los contenedores? Consulta este curso gratuito. Implementación de aplicaciones en contenedores:una descripción técnica general. ]

Todas las herramientas nuevas y brillantes

Ahora mi esposa todavía puede tener todas sus herramientas brillantes de la ferretería local, y mantendré mis nuevas herramientas de contenedor en mi caja de herramientas virtual. Espero que estos nuevos comandos y opciones le resulten útiles en su propia caja de herramientas.


Linux
  1. Cree su propio contenedor en Linux

  2. 4 herramientas de Linux para borrar tus datos

  3. Agregue videos como fondo de pantalla en su escritorio Linux

  4. 7 funciones divertidas de transporte de imágenes/contenedores de Linux

  5. ¿Cuál es la diferencia entre un contenedor de Linux y una imagen?

Asegure su privacidad en línea con estas distribuciones de Linux

Instale fuentes Nerd para agregar glifos en su código en Linux

Herramientas de Linux:du vs df

Cómo agregar una marca de agua de imagen en GIMP en Linux

¿Empezando con Linux Mint? Concéntrese en estas tres herramientas

Linux para empresas:haga crecer su empresa con estas aplicaciones