Compartir comentarios
Las respuestas se generan en base a la documentación.

Despliegue y orquestación

La contenedorización ofrece la oportunidad de trasladar y escalar aplicaciones a nubes y centros de datos. Los contenedores garantizan que esas aplicaciones se ejecuten de la misma manera en cualquier lugar, lo que te permite aprovechar al máximo y con agilidad todos estos entornos. Además, a medida que escalas tus aplicaciones, necesitas herramientas que te ayuden a automatizar el mantenimiento de las mismas, permitir el reemplazo automático de contenedores fallidos y gestionar la implementación de actualizaciones y reconfiguraciones de esos contenedores durante su ciclo de vida.

Las herramientas para gestionar, escalar y mantener aplicaciones contenedorizadas se denominan orquestadores. Dos de las herramientas de orquestación más populares son Kubernetes y Docker Swarm. Docker Desktop proporciona entornos de desarrollo para ambos orquestadores.

Los módulos avanzados te enseñan a:

  1. Configurar y usar un entorno Kubernetes en tu máquina de desarrollo
  2. Configurar y usar un entorno Swarm en tu máquina de desarrollo

Activar Kubernetes

Docker Desktop configura Kubernetes por ti de forma ágil y directa. Sigue las instrucciones de configuración y validación adecuadas para tu sistema operativo:

Mac

  1. Desde el panel de Docker Dashboard, dirígete a Settings y selecciona la pestaña Kubernetes.

  2. Selecciona la casilla etiquetada como Enable Kubernetes y selecciona Apply. Docker Desktop configura automáticamente Kubernetes por ti. Sabrás que Kubernetes se ha habilitado con éxito cuando veas una luz verde junto a 'Kubernetes running' en Settings.

  3. Para confirmar que Kubernetes está en funcionamiento, crea un archivo de texto llamado pod.yaml con el siguiente contenido:

    apiVersion: v1
    kind: Pod
    metadata:
      name: demo
    spec:
      containers:
        - name: testpod
          image: alpine:latest
          command: ["ping", "8.8.8.8"]

    Esto describe un pod con un solo contenedor, que aísla un ping básico a 8.8.8.8.

  4. En una terminal, dirígete a donde creaste pod.yaml y crea tu pod:

    $ kubectl apply -f pod.yaml
    
  5. Verifica que tu pod esté en funcionamiento:

    $ kubectl get pods
    

    Deberías ver algo como:

    NAME      READY     STATUS    RESTARTS   AGE
    demo      1/1       Running   0          4s
  6. Verifica que obtienes los registros esperados para un proceso de ping:

    $ kubectl logs demo
    

    Deberías ver la salida de un proceso de ping correcto:

    PING 8.8.8.8 (8.8.8.8): 56 data bytes
    64 bytes from 8.8.8.8: seq=0 ttl=37 time=21.393 ms
    64 bytes from 8.8.8.8: seq=1 ttl=37 time=15.320 ms
    64 bytes from 8.8.8.8: seq=2 ttl=37 time=11.111 ms
    ...
  7. Finalmente, elimina tu pod de prueba:

    $ kubectl delete -f pod.yaml
    

Windows

  1. Desde el panel de Docker Dashboard, dirígete a Settings y selecciona la pestaña Kubernetes.

  2. Selecciona la casilla etiquetada como Enable Kubernetes y selecciona Apply. Docker Desktop configura automáticamente Kubernetes por ti. Sabrás que Kubernetes se ha habilitado con éxito cuando veas una luz verde junto a 'Kubernetes running' en el menú Settings.

  3. Para confirmar que Kubernetes está en funcionamiento, crea un archivo de texto llamado pod.yaml con el siguiente contenido:

    apiVersion: v1
    kind: Pod
    metadata:
      name: demo
    spec:
      containers:
        - name: testpod
          image: alpine:latest
          command: ["ping", "8.8.8.8"]

    Esto describe un pod con un solo contenedor, que aísla un ping básico a 8.8.8.8.

  4. En PowerShell, dirígete a donde creaste pod.yaml y crea tu pod:

    $ kubectl apply -f pod.yaml
    
  5. Verifica que tu pod esté en funcionamiento:

    $ kubectl get pods
    

    Deberías ver algo como:

    NAME      READY     STATUS    RESTARTS   AGE
    demo      1/1       Running   0          4s
  6. Verifica que obtienes los registros esperados para un proceso de ping:

    $ kubectl logs demo
    

    Deberías ver la salida de un proceso de ping correcto:

    PING 8.8.8.8 (8.8.8.8): 56 data bytes
    64 bytes from 8.8.8.8: seq=0 ttl=37 time=21.393 ms
    64 bytes from 8.8.8.8: seq=1 ttl=37 time=15.320 ms
    64 bytes from 8.8.8.8: seq=2 ttl=37 time=11.111 ms
    ...
  7. Finalmente, elimina tu pod de prueba:

    $ kubectl delete -f pod.yaml
    

Habilitar Docker Swarm

Docker Desktop se ejecuta principalmente sobre Docker Engine, que tiene todo lo necesario para ejecutar un Swarm integrado. Sigue las instrucciones de configuración y validación adecuadas para tu sistema operativo:

Mac

  1. Abre una terminal e inicializa el modo Docker Swarm:

    $ docker swarm init
    

    Si todo va bien, deberías ver un mensaje similar al siguiente:

    Swarm initialized: current node (tjjggogqpnpj2phbfbz8jd5oq) is now a manager.
    
    To add a worker to this swarm, run the following command:
    
        docker swarm join --token SWMTKN-1-3e0hh0jd5t4yjg209f4g5qpowbsczfahv2dea9a1ay2l8787cf-2h4ly330d0j917ocvzw30j5x9 192.168.65.3:2377
    
    To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
  2. Ejecuta un servicio Docker simple que use un sistema de archivos basado en alpine y aísle un ping a 8.8.8.8:

    $ docker service create --name demo alpine:latest ping 8.8.8.8
    
  3. Verifica que tu servicio haya creado un contenedor en ejecución:

    $ docker service ps demo
    

    Deberías ver algo como:

    ID                  NAME                IMAGE               NODE                DESIRED STATE       CURRENT STATE           ERROR               PORTS
    463j2s3y4b5o        demo.1              alpine:latest       docker-desktop      Running             Running 8 seconds ago
  4. Verifica que obtienes los registros esperados para un proceso de ping:

    $ docker service logs demo
    

    Deberías ver la salida de un proceso de ping correcto:

    demo.1.463j2s3y4b5o@docker-desktop    | PING 8.8.8.8 (8.8.8.8): 56 data bytes
    demo.1.463j2s3y4b5o@docker-desktop    | 64 bytes from 8.8.8.8: seq=0 ttl=37 time=13.005 ms
    demo.1.463j2s3y4b5o@docker-desktop    | 64 bytes from 8.8.8.8: seq=1 ttl=37 time=13.847 ms
    demo.1.463j2s3y4b5o@docker-desktop    | 64 bytes from 8.8.8.8: seq=2 ttl=37 time=41.296 ms
    ...
  5. Finalmente, elimina tu servicio de prueba:

    $ docker service rm demo
    

Windows

  1. Abre PowerShell e inicializa el modo Docker Swarm:

    $ docker swarm init
    

    Si todo va bien, deberías ver un mensaje similar al siguiente:

    Swarm initialized: current node (tjjggogqpnpj2phbfbz8jd5oq) is now a manager.
    
    To add a worker to this swarm, run the following command:
    
        docker swarm join --token SWMTKN-1-3e0hh0jd5t4yjg209f4g5qpowbsczfahv2dea9a1ay2l8787cf-2h4ly330d0j917ocvzw30j5x9 192.168.65.3:2377
    
    To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
  2. Ejecuta un servicio Docker simple que use un sistema de archivos basado en alpine y aísle un ping a 8.8.8.8:

    $ docker service create --name demo alpine:latest ping 8.8.8.8
    
  3. Verifica que tu servicio haya creado un contenedor en ejecución:

    $ docker service ps demo
    

    Deberías ver algo como:

    ID                  NAME                IMAGE               NODE                DESIRED STATE       CURRENT STATE           ERROR               PORTS
    463j2s3y4b5o        demo.1              alpine:latest       docker-desktop      Running             Running 8 seconds ago
  4. Verifica que obtienes los registros esperados para un proceso de ping:

    $ docker service logs demo
    

    Deberías ver la salida de un proceso de ping correcto:

    demo.1.463j2s3y4b5o@docker-desktop    | PING 8.8.8.8 (8.8.8.8): 56 data bytes
    demo.1.463j2s3y4b5o@docker-desktop    | 64 bytes from 8.8.8.8: seq=0 ttl=37 time=13.005 ms
    demo.1.463j2s3y4b5o@docker-desktop    | 64 bytes from 8.8.8.8: seq=1 ttl=37 time=13.847 ms
    demo.1.463j2s3y4b5o@docker-desktop    | 64 bytes from 8.8.8.8: seq=2 ttl=37 time=41.296 ms
    ...
  5. Finalmente, elimina tu servicio de prueba:

    $ docker service rm demo
    

Conclusión

En este punto, has confirmado que puedes ejecutar cargas de trabajo contenedorizadas simples en Kubernetes y Swarm. El siguiente paso es escribir un archivo YAML que describa cómo ejecutar y gestionar estos contenedores.

Referencias de la CLI

Hay documentación adicional disponible para todos los comandos de la CLI utilizados en este artículo aquí: