Cree contenedores rápidos, fáciles y repetibles con Podman y scripts de shell

Podman es un motor de contenedores sin daemon para desarrollar, administrar y ejecutar contenedores e imágenes de contenedores compatibles con Open Container Initiative (OCI). Sigue los estándares de la industria para proporcionar una herramienta sólida de administración de contenedores que también puede integrar con Kubernetes y otros servicios según sea necesario.

Mejor aún, Podman es compatible con Docker hasta el punto de que simplemente puede crear un alias de la interfaz de línea de comandos (CLI) de Docker para el comando Podman (alias docker=podman) y no cambia nada en su flujo de trabajo o scripts.

Este artículo comienza una serie sobre las características de Podman y reutilizaré la configuración a continuación en mis artículos futuros. En este, le mostraré cómo comenzar con los contenedores de una manera rápida y repetible utilizando la interfaz familiar de secuencias de comandos de shell.

Índice

    poner las cosas en su lugar

    Debido a que los contenedores están diseñados para ser desechables o efímeros, es importante que sus contenedores sean reproducibles. Desea poder crear un contenedor con el entorno que necesita, destruirlo cuando ya no lo necesite y saber que puede volver a crearlo más tarde sin ningún esfuerzo adicional. Muchos usuarios recurren al formato Dockerfile para esto, pero un buen script de shell puede ser igual de útil y tiene el beneficio adicional de una mayor flexibilidad. Por ejemplo:

    $ podman --version
    
    podman version 3.0.2-dev

    Ya extraje algunas imágenes de contenedores que usaré para ejecutar mis contenedores y pods:

    $ podman image ls
    
    REPOSITORY                   TAG     IMAGE ID      CREATED      SIZE
    docker.io/library/wordpress  latest  054741915cf1  2 days ago   629 MB
    docker.io/library/mysql      latest  bbf6571db497  3 days ago   521 MB
    docker.io/library/httpd      latest  ea28e1b82f31  3 days ago   148 MB

    Contenedores de guiones

    Creé dos scripts simples para implementar mi pod y contenedores. El primero crea un pod con un contenedor de WordPress:

    #!/bin/bash
    # create_blog.sh
    
    set -e   #exit on most errors
    
    podman pod create --name blog --infra --publish 8080:80 --network bridge 
    
    podman run --pod blog --name mysql -e MYSQL_USER=alexon 
    -e MYSQL_PASSWORD=123456 -e MYSQL_DATABASE=wpdb 
    -e MYSQL_ROOT_PASSWORD=567890 
    --volume /var/local/mysql:/var/lib/mysql:Z 
    -d docker.io/library/mysql 
    
    podman run --pod blog --name wordpress -e WORDPRESS_DB_HOST=mysql 
    -e WORDPRESS_DB_USER=alexon 
    -e WORDPRESS_DB_PASSWORD=123456 
    -e WORDPRESS_DB_NAME=wpdb 
    -d docker.io/library/wordpress

    Lo siguiente inicia un servidor web:

    #!/bin/bash
    # create_web.sh
    
    podman run --name=httpd -p 8081:80 
    --volume /var/local/httpd:/usr/local/apache2/htdocs:Z 
    -d docker.io/library/httpd

    Me refiero a puntos de montaje externos para mis contenedores. Aquí está el contenido de estos directorios:

    $ ls -R /var/local/
    
    /var/local/:
    httpd  mysql
    
    /var/local/httpd:
    index.html
    
    /var/local/mysql:
    
    $ cat /var/local/httpd/index.html
    
    <html>
      <header>
        <title>Enable SysAdmin</title>
      </header>
      <body>
        <p>Hello World!</p>
      </body>
    </html>

    [ You might also be interested in reading How Podman runs on Macs and other container FAQs. ]

    Despliegue de contenedores

    Con la configuración correcta implementada, implemento mis contenedores usando mis scripts:

    $ ./create_web.sh
    
    7c4c01d99cccf70a0c42ebdba458afb8be6d1563de3a91c99519213a4d8654af
    
    $ ./create_blog.sh
    
    a061ffe41575ca69ec48a2151220ba9462ed87c3c54d0f35bfa74507b56ff902
    5bd37169ce0de342e5b86f7d8ba057b06cddb05b6d73520fca8c5ca69f1fe353
    055fc7959f58921ef11119b44b1d250558272b523765e639a5e5c3aa2ad3d2a0

    Solo para asegurarme de que mis aplicaciones se ejecuten correctamente en mis contenedores implementados recientemente, accedo a ellos a través de un navegador web. En primer lugar, la base httpd aplicación de contenedor:

    (Alexon Oliveira, CC BY-SA 4.0)

    A continuación, la aplicación básica de contenedor de WordPress:

    (Alexon Oliveira, CC BY-SA 4.0)

    Ambos están funcionando bien.

    Integración de la familiaridad en su flujo de trabajo de contenedores

    Los contenedores no tienen que ser conceptos extraños para un usuario de Linux. Integrados en el sistema operativo, son herramientas poderosas para el administrador del sistema ocupado. En mi próximo artículo, mostraré cómo Podman proporciona herramientas para mostrar información sobre la ejecución de pods.

    Hasta entonces, puede obtener más información sobre Podman en 10 guías de Podman para hacer más con contenedores en 2022, las 10 mejores guías de contenedores para administradores de sistemas y, por supuesto, Podman.io.

    Artículos de interés

    Subir