Introducción

Docker es una herramienta que permite empaquetar, distribuir y ejecutar aplicaciones en entornos aislados llamados contenedores. Estos contenedores son ligeros, portátiles y garantizan que las aplicaciones se ejecuten de manera consistente en cualquier entorno.

En este tutorial, aprenderás los conceptos básicos de Docker, incluyendo cómo instalar Docker, cómo crear y gestionar contenedores, y cómo trabajar con imágenes Docker.

1. Instalación de Docker

Antes de comenzar, necesitas instalar Docker en tu sistema. Las instrucciones de instalación varían según el sistema operativo que estés utilizando. Puedes encontrar las instrucciones de instalación detalladas en la documentación oficial de Docker o en mi otro post: Tutorial completo: Instalación de Docker

2. Conceptos Fundamentales

2.1 Imágenes Docker

Una imagen Docker es un paquete que incluye todo lo necesario para ejecutar una aplicación, incluyendo el código, las bibliotecas, las herramientas de ejecución y otros archivos necesarios. Las imágenes Docker se utilizan como plantillas para crear contenedores.

Para buscar imágenes Docker disponibles públicamente, puedes usar el comando docker search. Por ejemplo:

docker search ubuntu

2.2 Contenedores Docker

Un contenedor Docker es una instancia en ejecución de una imagen Docker. Puedes crear, iniciar, detener, mover o eliminar contenedores según sea necesario. Cada contenedor es un entorno aislado que ejecuta una aplicación específica.

Para crear y ejecutar un contenedor a partir de una imagen, puedes usar el comando docker run. Por ejemplo:

docker run ubuntu

Este comando creará un contenedor a partir de la imagen de Ubuntu y te proporcionará una terminal interactiva dentro del contenedor.

2.3 Dockerfile

Un Dockerfile es un archivo de texto plano que contiene las instrucciones para construir una imagen Docker. Con un Dockerfile, puedes automatizar el proceso de construcción de imágenes y definir la configuración del entorno de tu aplicación.

Aquí tienes un ejemplo básico de un Dockerfile para una aplicación Node.js:

# Usa una imagen base de Node.js
FROM node:14

# Establece el directorio de trabajo dentro del contenedor
WORKDIR /app

# Copia los archivos de la aplicación al contenedor
COPY . .

# Instala las dependencias
RUN npm install

# Expone el puerto 3000 para acceder a la aplicación
EXPOSE 3000

# Comando para ejecutar la aplicación cuando se inicie el contenedor
CMD ["node", "app.js"]

2.4 Docker Compose

Docker Compose es una herramienta que permite definir y ejecutar aplicaciones Docker de múltiples contenedores. Con Docker Compose, puedes definir la configuración de tu aplicación en un archivo YAML y luego ejecutar y gestionar la aplicación con un solo comando.

3. Ejemplos Prácticos

3.1 Crear y Ejecutar un Contenedor

Para crear y ejecutar un contenedor Docker a partir de una imagen, puedes utilizar el comando docker run. Por ejemplo, para crear y ejecutar un contenedor basado en la imagen de Ubuntu, puedes ejecutar el siguiente comando:

docker run -it ubuntu

Este comando creará un nuevo contenedor Ubuntu y te proporcionará una terminal interactiva dentro del contenedor.

3.2 Construir una Imagen Docker

Para construir una imagen Docker a partir de un Dockerfile, puedes utilizar el comando docker build. Por ejemplo, supongamos que tienes un archivo Dockerfile en tu directorio de trabajo. Puedes construir la imagen ejecutando el siguiente comando:

docker build -t mi-aplicacion .

Este comando construirá una imagen con el nombre mi-aplicacion a partir del Dockerfile en el directorio actual (.).

3.3 Ejecutar una Aplicación con Docker Compose

Para ejecutar una aplicación Docker con Docker Compose, primero necesitas definir la configuración de tu aplicación en un archivo YAML llamado docker-compose.yml. Por ejemplo, aquí tienes un archivo docker-compose.yml para una aplicación Node.js con una base de datos MongoDB:

version: '3'
services:
  app:
    build: .
    ports:
      - "3000:3000"
    depends_on:
      - db
  db:
    image: mongo
    ports:
      - "27017:27017"

Para ejecutar la aplicación, simplemente ejecuta el siguiente comando en el directorio donde se encuentra el archivo docker-compose.yml:

docker-compose up

Este comando creará y ejecutará los contenedores definidos en el archivo docker-compose.yml.

Conclusión

En este tutorial, hemos cubierto los conceptos básicos de Docker, incluyendo la instalación de Docker, la creación y gestión de contenedores, la construcción de imágenes Docker y el uso de Docker Compose. Con este conocimiento, deberías poder empezar a utilizar Docker para empaquetar, distribuir y ejecutar tus aplicaciones de forma más eficiente y consistente. ¡Feliz contenerización!