1. Libros y videos
  2. Linux
  3. Automatización con Docker
Extrait - Linux De la línea de comandos a la administración del sistema
Extractos del libro
Linux De la línea de comandos a la administración del sistema Volver a la página de compra del libro

Automatización con Docker

Conceptos básicos de Docker y microservicios

Docker, una innovadora plataforma de contenedorización, representa un gran avance en el desarrollo de software moderno. Su capacidad para encapsular aplicaciones en contenedores aislados ofrece una flexibilidad, portabilidad y coherencia sin precedentes. En comparación con una máquina virtual tradicional, un contenedor Docker es más ligero porque comparte el mismo núcleo del sistema operativo y aísla la aplicación del resto del sistema. Esto permite a los desarrolladores garantizar que la aplicación se ejecute de forma coherente en diversos entornos, ya sean máquinas de desarrollo, de prueba o de producción.

La tecnología Docker destaca por su capacidad para facilitar la estandarización de entornos. Al empaquetar código, librerías, dependencias y otros componentes necesarios, Docker elimina el famoso problema de «funciona en mi máquina». Esta estandarización es crucial para mejorar la productividad de los desarrolladores y la fiabilidad de las aplicaciones.

Al mismo tiempo, ha surgido el concepto de microservicios como método clave en el diseño de aplicaciones. A diferencia de la arquitectura monolítica tradicional, en la que una aplicación se construye como un bloque único, los microservicios segmentan la aplicación en servicios pequeños e independientes....

Configuración de microservicios con Docker

1. Contenedores en Docker

La tecnología de contenedores en la que se basa Docker ha revolucionado la forma en que se desarrollan, despliegan y gestionan las aplicaciones. Un contenedor Docker es esencialmente una unidad estandarizada de empaquetado de software que contiene todo lo que una aplicación necesita para ejecutarse: código, librerías, sistemas operativos y otras dependencias. Este concepto garantiza que la aplicación se ejecute de manera uniforme y coherente en cualquier entorno, ya sea de desarrollo, pruebas o producción. Los contenedores Docker están aislados entre sí y del sistema anfitrión, lo que proporciona una mayor seguridad y evita conflictos entre aplicaciones.

2. Dockerfiles: script de construcción de imágenes

Los Dockerfiles desempeñan un papel crucial en el ecosistema Docker. Un Dockerfile es un script compuesto por varios comandos en línea, cada uno de los cuales añade una capa a la imagen Docker. Suele comenzar con una sentencia FROM para definir la imagen base, seguida de comandos como COPY o ADD para incluir archivos en la imagen, RUN para ejecutar comandos de configuración, y CMD o ENTRYPOINT para especificar el comando por defecto que se ejecuta al lanzar el contenedor. Este proceso permite crear imágenes Docker personalizadas y reutilizables, garantizando una estandarización y automatización eficaces en el despliegue de aplicaciones.

Aquí hay algunos ejemplos de Dockerfiles para diferentes usos. Cada ejemplo demuestra cómo crear una imagen Docker para una aplicación o servicio específico. 

3. Dockerfile para una aplicación web básica en Node.js

# Utilizar la imagen de base oficial Node.js 
FROM node:14 
# Definir el directorio de trabajo en el contenedor 
WORKDIR /usr/src/app 
# Copiar los archivos de dependencias 
COPY package*.json ./ 
# Instalar las dependencias 
RUN npm install 
# Copiar todos los archivos de la aplicación en el contenedor 
COPY . . 
# Exponer el puerto sobre el que se va a ejecutar la aplicación 
EXPOSE 8080 
# Comando para arrancar la aplicación 
CMD ["node", "app.js"] 

4. Dockerfile para una aplicación Python/Flask

# Imagen básica con Python 3 
FROM...

Gestión de microservicios con Docker

1. Comandos populares de Docker

Los comandos básicos de Docker para gestionar contenedores y volúmenes, son esenciales para trabajar eficientemente con Docker. A continuación, se ofrece una descripción general de estos comandos:

 Para crear un contenedor sin iniciarlo, utilice docker create. Por ejemplo, para crear un contenedor a partir de la imagen de Apache: docker create --name mi-apache httpd

images/cap8_pag22.png

 Para iniciar un contenedor, puede utilizar docker start. Por ejemplo, para iniciar el contenedor que acaba de crear: docker start mi-apache

images/cap8_pag22_b.png

Si sólo desea descargar la imagen, puede utilizar docker pull, como: docker pull httpd

Para crear e iniciar (al mismo tiempo) el contenedor Apache, puede utilizar docker run: docker run -d --name mi-apache -p 80:80 httpd

-d significa "separado", por lo que el contenedor se ejecutará en segundo plano. 

--name mi-apache asigna el nombre mi-apache al contenedor.

-p 80:80 asigna el puerto 80 del contenedor al puerto 80 de su máquina anfitriona. Esto permite acceder al servidor Apache a través de su navegador yendo a http://localhost.

images/cap8_pag23.png
images/08EI14.png

 Una vez que haya creado y ejecutado sus contenedores, puede utilizar el comando docker ps para mostrar la lista de contenedores Docker que se están ejecutando actualmente

 Para renombrar un contenedor existente, utilice docker rename. Por ejemplo: docker rename mi-apache mi-server-web

images/cap8_pag24.png

Como los contenedores son efímeros, los datos que contienen se destruyen cada vez que se apaga el contenedor. No son persistentes. Si quiere gestionar un contenedor de base de datos como MySQL con datos persistentes, necesita usar un volumen.

 Crear un volumen Docker. Este volumen se utilizará para almacenar los datos de la base de datos de forma persistente: docker volume create mysql-data

 A continuación, lance un contenedor MySQL utilizando la imagen oficial de MySQL y monte el volumen que acaba de crear. También tendrá que establecer las variables de entorno necesarias, como la contraseña de root: docker run -d --name mi-mysql  -e MYSQL_ROOT_PASSWORD=<contraseña de root>  -v mysql-data:/var/lib/mysql mysql

 No olvide elegir una contraseña de root.

images/cap8_pag25.png

 Una vez que su servidor MySQL ha sido lanzado, para interactuar con él, puede utilizar docker exec para ejecutar...