MÓDULO 2: ¿QUÉ ES DOCKER?
Docker es una plataforma de contenedorización de código abierto que simplifica el despliegue de aplicaciones empaquetando el software y sus dependencias en una unidad estandarizada llamada contenedor. A diferencia de las máquinas virtuales tradicionales , los contenedores Docker comparten el núcleo del sistema operativo anfitrión, lo que los hace más eficientes y ligeros.
Los contenedores garantizan que una aplicación se ejecute de la misma forma en entornos de desarrollo, pruebas y producción. Esto reduce los problemas de compatibilidad y mejora la portabilidad entre varias plataformas. Debido a su flexibilidad y escalabilidad, Docker se ha convertido en una herramienta crucial en los flujos de trabajo modernos de DevOps y desarrollo nativo en la nube.
MÓDULO 3: ARQUITECTURA DOCKER
Docker opera en un modelo cliente-servidor, consistiendo en varios componentes clave que trabajan juntos sin problemas.
Motor de Docker
En el núcleo de Docker está el Motor de Docker, que incluye:
- Daemon de Docker: El servicio de fondo que se ejecuta en el host y gestiona la construcción, ejecución y distribución de contenedores Docker.
- CLI de Docker: La interfaz de línea de comandos utilizada para interactuar con el daemon de Docker.
- API REST: Permite que aplicaciones remotas interactúen con el daemon de Docker.
Componentes de Docker
Docker utiliza varios objetos para construir y ejecutar aplicaciones:
- Imágenes: Plantillas de solo lectura utilizadas para crear contenedores.
- Contenedores: Instancias ejecutables de imágenes.
- Networks: Redes que facilitan la comunicación entre contenedores y el mundo exterior.
- Volúmenes: Almacenamiento de datos persistente para contenedores.
Entender esta arquitectura permite visualizar cómo interactúan los diferentes componentes y ayuda en la resolución de problemas potenciales.
Beneficios de la Arquitectura de Docker
- Aislamiento: Los contenedores se ejecutan en entornos aislados, asegurando consistencia en diferentes sistemas.
- Portabilidad: Las imágenes de Docker pueden ejecutarse en cualquier sistema que soporte Docker, independientemente del SO subyacente.
- Eficiencia: Los contenedores comparten el kernel del SO host, haciéndolos ligeros en comparación con las VMs tradicionales.
Docker Hub
Docker Hub es un servicio de registro basado en la nube donde puedes encontrar y compartir imágenes de contenedores. Es un excelente recurso para principiantes para explorar varias imágenes pre-construidas.
MÓDULO 4: DOCKER vs VM
Factores |
Docker |
Máquina virtual |
Arranque |
En segundos |
En minutos |
Disponibilidad |
Los contenedores docker preconstruidos están fácilmente disponibles |
Las máquinas virtuales listas para usar son difíciles de encontrar |
Recursos |
Menor uso de recursos |
Más uso de recursos |
Almacenamiento |
Los contenedores son algo más ligeros (KBs/MBs) |
Las máquinas virtuales tienen unos pocos GB |
Sistema operativo |
Cada contenedor puede compartir el sistema operativo |
Cada máquina virtual tiene un sistema operativo independiente |
Movilidad |
Los contenedores se destruyen y se vuelven a crear en lugar de moverse |
Las máquinas virtuales pueden moverse a nuevos hosts fácilmente |
Se ejecuta en |
Los dockers hacen uso del motor de ejecución. |
Las máquinas virtuales hacen uso del hipervisor. |
Uso |
Docker tiene un medio de operación complejo que se compone de herramientas de terceros y administradas por Docker. |
Las herramientas son más sencillas de trabajar y fáciles de usar. |
Gestión |
Los contenedores dejan de funcionar con la ejecución del "comando stop" |
Las máquinas virtuales siempre están en el estado de ejecución de funcionamiento |
Control |
Las imágenes pueden ser interpretation controlled; tienen un registro original llamado Docker Hub. |
La VM no tiene un hub central; no están controlados |
Gestión de memoria |
Es más eficiente en la memoria. | Es menos eficiente en la memoria. |
Aislamiento |
No dispone de un sistema de aislamiento, por lo que es muy propenso a los problemas. | Cuenta con un eficiente mecanismo de aislamiento. |
Tiempo |
Es fácil de implementar y lleva menos tiempo en comparación con las máquinas virtuales. | Es un proceso largo. Por lo tanto, se necesita mucho tiempo para la implementación. |
Facilidad de uso |
Es un poco difícil de usar debido al complejo mecanismo de uso. | Es fácil de usar. |
MÓDULO 5: IMÁGENES DOCKER, DOCKERFILE
Las imágenes Docker son los bloques de construcción fundamentales de los contenedores. Son plantillas inmutables, de sólo lectura, que contienen todo lo necesario para ejecutar una aplicación, incluido el sistema operativo, el código de la aplicación, el tiempo de ejecución y las dependencias.
Las imágenes se construyen utilizando un Dockerfile, que define las instrucciones para crear una imagen capa a capa.
Las imágenes pueden almacenarse y recuperarse de registros de contenedores como Docker Hub.
Aquí tienes algunos comandos de ejemplo para trabajar con imágenes:
docker build -t tu-nombre-de-imagen .
: Genera una imagen y le da un nombre.
docker image ls
: Lista todas las imágenes disponibles en la máquina local.
docker pull nginx
: Obtén la última imagen de Nginx de Docker Hub.
docker rmi -f nginx
: Eliminar una imagen de la máquina local (forzado).
MÓDULO 6: CONTENEDORES DOCKER
Un contenedor Docker es una instancia en ejecución de una imagen Docker. Cada contenedor tiene su propio sistema de archivos, red y espacio de procesos, pero comparte el núcleo anfitrión.
Los contenedores siguen un ciclo de vida sencillo que incluye su creación, inicio, parada y eliminación. Aquí tienes un desglose de los comandos comunes de gestión de contenedores:
docker create
o docker run
: Crear un contenedor.
docker start
: Poner en marcha un contenedor.
docker stop
: Detener un contenedor.
docker restart
: Reiniciar un contenedor.
docker rm
: Borrar un contenedor.
docker ps -a
: Listar todos los contenedores.