Introducción a Docker
En los últimos años se ha ido extendiendo el uso de contenedores como elementos esenciales para el uso de aplicaciones en entornos en producción, tanto más cuanto más variable sea la demanda, la frecuencia con la que se actualizan o la necesidad de que funcionen de forma ininterrumpida. Gestionar una aplicación sobre contenedores, que pueda actualizarse rápidamente, que sea escalable o tolerante a fallos, es una tarea compleja que se realiza mediante un software específico.
Docker es una empresa (Docker Inc.) que desarrolla un software con el mismo nombre, de forma más concreta el software denominado (docker engine), que ha supuesto una revolución en el desarrollo de software, muy ligado al uso de contenedores de aplicaciones, a las aplicaciones web y al desarrollo ágil. Docker permite gestionar contenedores a alto nivel, proporcionando todas las capas y funcionalidad adicional y, lo más importante de todo, es que proporciona un nuevo paradigma en la forma de distribuir las aplicaciones, ya que se crean imágenes en contenedores que se distribuyen, de manera que el contenedor que se ha desarrollado es idéntico al que se utiliza en producción y deja de instalarse la aplicación de forma tradicional.
En este curso se va a introducir el concepto de la puesta en producción de aplicaciones web usando contenedores Docker.
Los siguientes contenidos forman parte de un curso que he impartido para OpenWebinars en mayo de 2024.
Puedes obtener todo el contenido del curso en el repositorio GitHub. Puedes acceder al Repositorio con los ficheros de los ejercicios.
Unidades
- Introducción a Docker
- Ejecución de contenedores
- El “Hola Mundo” de Docker
- Ejecución simple de contenedores
- Más opciones en la ejecución de contenedores (1ª parte)
- Más opciones en la ejecución de contenedores (2ª parte)
- Gestión de contenedores Docker
- Ejemplo: Creando un contenedor con un servidor web
- Ejemplo: Configuración de un contenedor con la imagen MariaDB
- Etiquetando los contenedores con Labels
- Limitando los recursos utilizados por un contenedor Docker
- Gestión de imágenes en Docker
- Almacenamiento en Docker
- Los contenedores son efímeros
- Almacenamiento en Docker
- Asociando almacenamiento a los contenedores: volúmenes Docker
- Asociando almacenamiento a los contenedores: bind mount
- Ejemplo 1: Contenedor NextCloud con almacenamiento persistente
- Ejemplo 2: Contenedor MariaDB con almacenamiento persistente
- Otros usos del almacenamiento en Docker
- Redes en Docker
- Introducción a las redes en Docker
- Uso de la red host en Docker
- Uso de la red bridge por defecto
- Redes bridge definidas por el usuario
- Uso de la red bridge definidas por el usuario
- Ejemplo 1: Despliegue de la aplicación Guestbook
- Ejemplo 2: Despliegue de la aplicación Temperaturas
- Ejemplo 3: Despliegue de WordPress + MariaDB
- Ejemplo 4: Despliegue de Apache Tomcat + nginx
- Creando escenarios multicontenedor con Docker Compose
- Creando escenarios multicontenedor con Docker Compose
- El fichero compose.yaml
- El comando docker compose
- Almacenamiento con Docker Compose
- Redes con Docker Compose
- Ejemplo 1: Despliegue de la aplicación Guestbook
- Ejemplo 2: Despliegue de la aplicación Temperaturas
- Ejemplo 3: Despliegue de WordPress + MariaDB
- Ejemplo 4: Despliegue de Apache Tomcat + nginx
- Uso de parámetros con Docker Compose
- Ejemplos reales de despliegues usando Docker Compose
- Creación de imágenes en Docker
- Introducción a la construcción y distribución de imágenes Docker
- Creación de imágenes a partir de un contenedor
- El fichero Dockerfile
- Creación de imágenes a partir de un Dockerfile
- Distribución de imágenes
- Ejemplo 1: Construcción de imágenes con una página estática
- Ejemplo 2: Construcción de imágenes con una una aplicación PHP
- Ejemplo 3: Construcción de imágenes con una una aplicación Python
- Ejemplo 4: Construcción de imágenes configurables con variables de entorno
- Ejemplo 5: Configuración de imágenes con una aplicación Java
- Creación de imágenes con Docker Compose
- Uso de ficheros Dockerfile parametrizados
- Ciclo de vida de nuestras aplicaciones con Docker
- Eliminar objetos Docker no utilizados
- Docker Desktop