Fundamentos de Docker
¿Qué es Docker?
Docker es una plataforma de código abierto que permite a los desarrolladores construir, implementar y ejecutar aplicaciones en contenedores. Los contenedores son paquetes de software ligeros, autónomos y ejecutables que incluyen todo lo necesario para ejecutar una aplicación, incluyendo el código, el entorno de ejecución, las herramientas del sistema y las bibliotecas. Docker proporciona una forma consistente y confiable de empaquetar y distribuir aplicaciones, lo que facilita el desarrollo, las pruebas y la implementación de software.
Arquitectura de Docker
Docker utiliza una arquitectura cliente-servidor, donde el cliente Docker se comunica con el demonio Docker, que es responsable de construir, ejecutar y gestionar los contenedores Docker. El demonio Docker se ejecuta en la máquina host, mientras que el cliente Docker puede ejecutarse en la misma máquina o en una máquina remota.
graph LR
A[Cliente Docker] -- API --> B[Demonio Docker]
B -- Ejecuta Comandos --> C[Imágenes Docker]
B -- Gestiona --> D[Contenedores Docker]
Imágenes Docker
Las imágenes Docker son los componentes básicos de los contenedores. Son plantillas de solo lectura que contienen el código de la aplicación, el entorno de ejecución, las herramientas del sistema y las bibliotecas necesarias para ejecutar la aplicación. Las imágenes Docker se crean utilizando un Dockerfile, que es un archivo de texto que contiene instrucciones para construir la imagen.
## Dockerfile
FROM ubuntu:22.04
RUN apt-get update && apt-get install -y nginx
COPY index.html /usr/share/nginx/html/
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
Contenedores Docker
Los contenedores Docker son instancias de imágenes Docker. Son entornos ligeros, portátiles y autocontenidos que ejecutan aplicaciones. Los contenedores están aislados del sistema host y entre sí, garantizando un comportamiento consistente y confiable de las aplicaciones.
## Ejecutar un contenedor
docker run -d -p 80:80 my-nginx-app
Redes Docker
Docker proporciona capacidades de red integradas que permiten que los contenedores se comuniquen entre sí y con el sistema host. Docker admite varios controladores de red, incluyendo redes puente, host y overlay.
## Crear una red puente
docker network create my-network
## Ejecutar un contenedor en la red
docker run -d --network my-network my-app
Volúmenes Docker
Los volúmenes Docker se utilizan para persistir los datos generados por un contenedor. Los volúmenes se pueden utilizar para almacenar datos de la aplicación, archivos de configuración y otra información persistente. Los volúmenes se pueden montar en el sistema de archivos del host o en otros contenedores.
## Crear un volumen
docker volume create my-data
## Ejecutar un contenedor con un volumen
docker run -d -v my-data:/app my-app