RousselTMLEARNING

TP · Docker : del descubrimiento al nivel experto

Creación de mi primer contenedor con corrección

La corrección está integrada en el TP (Ver los recuadros verdes)

Los requisitos previos #

Debe tener una máquina con Docker instalado.

Despliegue #

En esta sección, desplegaremos nuestro primer contenedor Docker.

  1. Encontrar y descargar la imagen

    Vamos a desplegar un servidor web Apache en versión 2.4.62. Por lo tanto, necesitamos encontrar una imagen lista para usar para descargarla en nuestro servidor web Apache.

    Debe ir a un registro de Docker. Como aún no tenemos un registro privado, iremos a un registro público, por ejemplo:
    • Docker Hub: https://hub.docker.com/
    • Quay.io: https://quay.io

    Y seleccione la imagen que nos interesa.

    RECORDATORIO: Dependiendo de las distribuciones, el servidor Apache se puede llamar httpd.

    Entonces, en el caso de Docker Hub, esto nos da:
    docker pull httpd:2.4.62
  2. Desplegar el contenedor

    Debe desplegar nuestro primer contenedor con las siguientes características:
    • Imagen: apache en versión 2.4.62
    • Exposición de puerto: 83
    • Nombre del contenedor: mon-premier-conteneur
    Puede crear el contenedor con el comando a continuación:
    docker run -dit --name mon-premier-conteneur -p 83:80 httpd:2.4.62

    Con estas explicaciones:
    • docker run -> comando para crear un contenedor
    • -dit -> combinación de opciones que inician el contenedor en modo separado (d), interactivo (i) y asignan un pseudo-TTY. Atención, las opciones evolucionan con su necesidad, pero siempre vaya a lo simple (opciones predeterminadas)
    • -p 83:80 -> exponer el puerto 83 en el host y 80 en el invitado (contenedor)
    • httpd:2.4.62 -> Imagen utilizada
  3. Verificación del estado del contenedor

    Debe verificar el buen funcionamiento de su contenedor. Para esto, debe proporcionar los comandos de docker para las siguientes acciones:
    • Mostrar los contenedores iniciados
    • Mostrar los contenedores iniciados y detenidos
    • Mostrar únicamente el contenedor mon-premier-conteneur
    • Mostrar los contenedores que tienen el Label AUTOR:ROUSSELTM
    Puede hacer las acciones con los siguientes comandos:
    docker ps
    docker ps -a
    docker ps -a | grep mon-premier-conteneur
    Este comando a través de '|' puede cubrir muchos casos, pero para hacer las cosas correctamente debe usar la opción -f/--filter. Le invito a leer los otros parámetros (Ver). Por lo tanto, esto nos da
    docker ps -f name=mon-premier-conteneur
    Para mostrar los contenedores con las etiquetas no podemos usar el '|' porque nuestra salida de ps no muestra las etiquetas. Por lo tanto, estamos obligados a pasar por los filtros
    docker ps --filter 'label=AUTOR=ROUSSELTM'
  4. Verificación del contenedor

    Debe encontrar el comando para probar el buen funcionamiento del contenedor del servidor web.
    ATENCIÓN: un contenedor que está iniciado no es un contenedor que funciona. Debe verificar sus registros (logs) y sus salidas.
    Puede realizar las acciones con los siguientes comandos:
    $ curl http://localhost:83 -s
    Debe tener en la salida el texto 'It works!'

Optimización #

En esta sección, optimizaremos nuestro primer contenedor Docker.

  1. Construir un segundo contenedor más ligero

    Como se señaló durante las clases, debe usar las imágenes oficiales como prioridad y especialmente las más óptimas. Debe elegir otra imagen más optimizada en términos de tamaño.

    Puede crear un contenedor más ligero con Alpine.

    RECORDATORIO: Una buena práctica es utilizar las imágenes alpine en cuanto estén disponibles.

    Entonces, en el caso de Docker Hub, esto nos da:
    docker run -dit --name mon-second-conteneur -p 84:80 httpd:2.4.62-alpine
  2. Comparar el consumo de disco de los dos contenedores

    Debe encontrar un comando que muestre únicamente los dos contenedores con su uso de disco, sabiendo que las dos imágenes tienen nombres que contienen 'mon-'

    Puede hacerlo con el comando a continuación:
    $ docker ps -f name=mon- -s
    CONTAINER ID   IMAGE                 COMMAND              CREATED          STATUS          PORTS                NAMES                   SIZE
    410b6a032a0c   httpd:2.4.62-alpine   'httpd-foreground'   19 seconds ago   Up 17 seconds   0.0.0.0:84->80/tcp   mon-second-conteneur    2B (virtual 62.9MB)
    0865fe7c9e31   httpd:2.4.62          'httpd-foreground'   3 hours ago      Up 3 hours      0.0.0.0:83->80/tcp   mon-premier-conteneur   2B (virtual 148MB)

    Con estas explicaciones:
    • -s -> mostrar el uso de disco
    Por lo tanto, puede comparar el contenido de la columna 'SIZE'.

Nivel de dificultad : ●●○○○ (2/5)

Glossaire de la formation

Microservicios

Arquitectura donde una aplicación se divide en varios servicios pequeños e independientes, a menudo desplegados en la nube.

Docker

Herramienta que permite virtualizar y empaquetar aplicaciones dentro de contenedores ligeros para un despliegue óptimo.Ejemplo de despliegue de un con...

Prometheus

Sistema de monitorización y alertas de código abierto, particularmente adaptado para la recopilación de métricas en entornos dinámicos (como Kubernete...

Kubernetes

Plataforma de código abierto de orquestación de contenedores que permite automatizar el despliegue, el escalado y la gestión de aplicaciones en conten...

CI/CD

Integración Continua y Despliegue Continuo. Prácticas DevOps destinadas a automatizar las pruebas y el despliegue de aplicaciones para entregar de for...

Terraform

Herramienta de Infraestructura como Código (IaC) que permite definir y aprovisionar recursos de infraestructura en la nube y on-premise a través de ar...

Métricas

Medidas numéricas recopiladas a intervalos regulares (ej: CPU, RAM, tiempo de respuesta) utilizadas para evaluar el estado de salud general de un sist...

DevOps

Cultura, movimiento y prácticas destinadas a unificar el desarrollo de software (Dev) y la administración de infraestructuras informáticas (Ops).

API Gateway

Pasarela que sirve de punto de entrada único para todas las solicitudes hacia arquitecturas de microservicios. Gestiona el enrutamiento, la seguridad ...

Arquitectura

Diseño global y estructural de un sistema informático, definiendo sus diferentes componentes, sus relaciones y los principios que guían su evolución.

Artefacto (Artifact)

Resultado final de un proceso de compilación o construcción de software (build), como un archivo .jar, un archivo zip o una imagen de Docker, listo pa...

Repositorio (Repository)

Depósito de almacenamiento centralizado. Puede referirse a un repositorio de código fuente (ej: Git) o a un repositorio de artefactos y binarios (ej: ...

Ansible

Herramienta de automatización informática de código abierto (IaC) que permite la gestión de configuraciones, el despliegue de aplicaciones y la orques...