Leanpub Header

Skip to main content

Libro para Desarrolladores Web Principiantes en Docker

Aprende a usar Docker en tus proyectos Web en Laravel, FastAPI, Django, CodeIgniter y más

Este libro ofrece una guía completa para iniciarse en el mundo de Docker, abarcando desde los conceptos más elementales hasta la orquestación de aplicaciones complejas con Docker Compose, con un enfoque práctico para desarrolladores web; es decir, podrás aprender a usar Docker para desarrollar tus apps web en con Laravel, CodeIgniter, Flask, FastAPI, Django y en definitiva, cualquier app web que puedas levantar con Docker o en producción.

Minimum price

$3.00

$8.00

You pay

$8.00

Author earns

$6.40
$

...Or Buy With Credits!

You can get credits with a paid monthly or annual Reader Membership, or you can buy them here.
PDF
EPUB
About

About

About the Book

Este libro ofrece una guía completa para iniciarse en el mundo de Docker, abarcando desde los conceptos más elementales hasta la orquestación de aplicaciones complejas con Docker Compose, con un enfoque práctico para desarrolladores web; es decir, podrás aprender a usar Docker para desarrollar tus apps web en con Laravel, CodeIgniter, Flask, FastAPI, Django y en definitiva, cualquier app web que puedas levantar con Docker o en producción.

1. Introducción a Docker y sus Conceptos Fundamentales

Antes de sumergirse en los comandos, es crucial entender la filosofía detrás de Docker y sus componentes principales.

¿Qué es Docker y por qué usarlo?

Docker es una plataforma que permite empaquetar aplicaciones junto con todas sus dependencias (librerías, configuraciones, etc.) en unidades estandarizadas llamadas contenedores. El objetivo principal es garantizar que una aplicación se ejecute de manera consistente en cualquier entorno, ya sea la máquina de un desarrollador, un servidor de pruebas o la nube.

La necesidad de Docker se comprende mejor con analogías. Al igual que los ambientes virtuales en Python (venv, pipenv) aíslan las dependencias de un proyecto para evitar conflictos entre versiones (por ejemplo, tener un proyecto con Django 4 y otro con Django 7 en la misma máquina), Docker encapsula toda la aplicación y su entorno, previniendo problemas de compatibilidad con el sistema operativo anfitrión y otros proyectos.

Imágenes (Images): Las Plantillas de tus Aplicaciones

Una imagen de Docker es una plantilla inmutable y de solo lectura que contiene todo lo necesario para ejecutar una aplicación: el sistema de archivos, el código, las librerías y las variables de entorno. Se puede pensar en una imagen como un archivo .exe o una clase en programación orientada a objetos: es un paquete estático que no hace nada por sí solo hasta que se ejecuta. Ejemplos de imágenes populares son python, ubuntu, nginx y postgres.

Contenedores (Containers): Las Instancias en Ejecución

Un contenedor es una instancia en ejecución de una imagen. Si la imagen es el plano, el contenedor es la casa construida a partir de ese plano. Al lanzar un contenedor, este se ejecuta como un proceso aislado con su propio sistema de archivos, red y entorno, pero compartiendo el kernel del sistema operativo anfitrión, lo que lo hace mucho más ligero que una máquina virtual completa. Los contenedores son portátiles, autocontenidos y pueden ser creados, iniciados, detenidos y eliminados de forma independiente.

2. Arquitectura y Comandos Esenciales de Docker

Para interactuar con Docker, se utilizan principalmente dos componentes que trabajan en conjunto.

El Cliente (docker) y el Demonio (dockerd)

  • Docker Client (docker): Es la herramienta de línea de comandos (CLI) con la que el usuario interactúa. Cuando escribes un comando como docker run, estás usando el cliente.
  • Docker Daemon (dockerd): Es el motor de Docker, un proceso que se ejecuta en segundo plano y se encarga de gestionar las imágenes, contenedores, redes y volúmenes. El cliente envía las instrucciones al demonio, y este las ejecuta.

Comandos Imprescindibles para la Gestión

  • docker images: Lista todas las imágenes descargadas en tu sistema.
  • docker ps: Muestra los contenedores que están actualmente en ejecución.
  • docker ps -a: Muestra todos los contenedores, tanto activos como detenidos.
  • docker run <imagen>: Crea y arranca un nuevo contenedor a partir de una imagen.
  • docker stop <id/nombre>: Detiene un contenedor en ejecución.
  • docker rm <id/nombre>: Elimina un contenedor detenido.
  • docker rmi <id/nombre>: Elimina una imagen.
  • docker logs <id/nombre>: Muestra los registros (logs) de un contenedor, útil para depurar.
  • docker exec -it <id/nombre> bash: Permite acceder a una terminal interactiva dentro de un contenedor que ya está en ejecución.

3. Creación de Imágenes Personalizadas con Dockerfile

El verdadero poder de Docker para los desarrolladores reside en la capacidad de crear imágenes propias para sus proyectos.

El Archivo Dockerfile

Un Dockerfile es un archivo de texto sin extensión que contiene un conjunto de instrucciones secuenciales para construir una imagen personalizada. Su estructura típica incluye:

  1. FROM: Define la imagen base sobre la cual se construirá la nueva imagen (ej. FROM python:3.12-slim).
  2. WORKDIR: Establece el directorio de trabajo dentro del contenedor (ej. WORKDIR /app).
  3. COPY: Copia archivos desde el sistema anfitrión al contenedor (ej. COPY requirements.txt .).
  4. RUN: Ejecuta comandos durante el proceso de construcción, como la instalación de dependencias (ej. RUN pip install -r requirements.txt).
  5. EXPOSE: Informa a Docker sobre los puertos que el contenedor expondrá (ej. EXPOSE 5050).
  6. CMD: Especifica el comando por defecto que se ejecutará al iniciar el contenedor (ej. CMD ["python", "app py"]).

Una vez definido el Dockerfile, la imagen se construye con el comando docker build -t mi-app ..

4. Orquestación de Múltiples Contenedores con Docker Compose

Para aplicaciones que requieren múltiples servicios (como una aplicación web, una base de datos y un servidor de caché), Docker Compose simplifica la gestión.

¿Qué es Docker Compose?

Es una herramienta que permite definir y ejecutar aplicaciones multi-contenedor a través de un único archivo de configuración llamado docker-compose.yml. En este archivo se definen los "servicios" que componen la aplicación, donde cada servicio es un contenedor.

El Archivo docker-compose.yml

Este archivo YAML define los servicios, redes y volúmenes. Por ejemplo, se puede definir un servicio web para una aplicación Flask y un servicio redis para la caché. Compose se encarga de crear y conectar los contenedores de forma automática. Los comandos principales son docker compose up para levantar la aplicación y docker compose down para detenerla.

5. Optimización del Flujo de Desarrollo

Para que Docker sea una herramienta de desarrollo eficiente, es fundamental que los cambios en el código se reflejen en tiempo real sin necesidad de reconstruir la imagen constantemente.

Volúmenes para la Persistencia de Datos

Los volúmenes permiten persistir datos fuera del ciclo de vida de un contenedor. Funcionan como un disco duro externo, montando un directorio del sistema anfitrión dentro del contenedor. Esto es clave para el desarrollo, ya que el código fuente puede vivir en la máquina local y ser "sincronizado" con el contenedor.

Docker Compose Watch: Sincronización en Tiempo Real

Docker Compose incluye una funcionalidad de watch que monitorea los cambios en los archivos locales y los sincroniza automáticamente con el contenedor. Esto se configura en el archivo docker-compose.yml dentro de una sección develop. Al ejecutar docker compose up --watch, los cambios en el código se reflejan instantáneamente en la aplicación que se ejecuta dentro del contenedor, creando un flujo de trabajo de desarrollo ágil y eficiente.

Share this book

Categories

Author

About the Author

Andrés Cruz Yoris

Andrés Cruz Yoris, Licenciado en Computación, con más de 10 años de experiencia en el desarrollo de aplicaciones web en general; trabajo con PHP, Python y tecnologías del lado del cliente como HTML, JavaScript, CSS, Vue entre otras; y del lado del servidor como Laravel, Flask, Django y Codeigniter. También desarrollo con Android Studio, xCode y Flutter para la creación de aplicaciones nativas para Android e IOS.

Pongo a tú disposición parte de mi aprendizaje, reflejado en cada una de las palabras que componen mis libros sobre el desarrollo de aplicaciones en general.

Translations

Translations

Languages

The Leanpub 60 Day 100% Happiness Guarantee

Within 60 days of purchase you can get a 100% refund on any Leanpub purchase, in two clicks.

Now, this is technically risky for us, since you'll have the book or course files either way. But we're so confident in our products and services, and in our authors and readers, that we're happy to offer a full money back guarantee for everything we sell.

You can only find out how good something is by trying it, and because of our 100% money back guarantee there's literally no risk to do so!

So, there's no reason not to click the Add to Cart button, is there?

See full terms...

Earn $8 on a $10 Purchase, and $16 on a $20 Purchase

We pay 80% royalties on purchases of $7.99 or more, and 80% royalties minus a 50 cent flat fee on purchases between $0.99 and $7.98. You earn $8 on a $10 sale, and $16 on a $20 sale. So, if we sell 5000 non-refunded copies of your book for $20, you'll earn $80,000.

(Yes, some authors have already earned much more than that on Leanpub.)

In fact, authors have earned over $14 million writing, publishing and selling on Leanpub.

Learn more about writing on Leanpub

Free Updates. DRM Free.

If you buy a Leanpub book, you get free updates for as long as the author updates the book! Many authors use Leanpub to publish their books in-progress, while they are writing them. All readers get free updates, regardless of when they bought the book or how much they paid (including free).

Most Leanpub books are available in PDF (for computers) and EPUB (for phones, tablets and Kindle). The formats that a book includes are shown at the top right corner of this page.

Finally, Leanpub books don't have any DRM copy-protection nonsense, so you can easily read them on any supported device.

Learn more about Leanpub's ebook formats and where to read them

Write and Publish on Leanpub

You can use Leanpub to easily write, publish and sell in-progress and completed ebooks and online courses!

Leanpub is a powerful platform for serious authors, combining a simple, elegant writing and publishing workflow with a store focused on selling in-progress ebooks.

Leanpub is a magical typewriter for authors: just write in plain text, and to publish your ebook, just click a button. (Or, if you are producing your ebook your own way, you can even upload your own PDF and/or EPUB files and then publish with one click!) It really is that easy.

Learn more about writing on Leanpub