Docker: Instalación y primeros pasos

Docker es una plataforma que permite desarrollar, enviar y ejecutar aplicaciones de manera consistente en diferentes entornos. Gracias a la creación de contenedores, Docker asegura que las aplicaciones se ejecuten de la misma manera en desarrollo, prueba y producción.

Funciones principales de Docker

  • Aislamiento de aplicaciones: Cada contenedor ejecuta una aplicación y sus dependencias de manera independiente.
  • Portabilidad: Los contenedores de Docker pueden ejecutarse en cualquier sistema que soporte Docker, asegurando un comportamiento consistente en todos los entornos.
  • Escalabilidad: Docker permite escalar aplicaciones fácilmente mediante la ejecución de múltiples contenedores.
  • Eficiencia: Los contenedores son más ligeros que las máquinas virtuales, ya que comparten el kernel del sistema operativo, lo que mejora el rendimiento.

Docker Hub

Docker Hub es el repositorio oficial de imágenes de Docker, donde puedes encontrar una variedad de imágenes preconstruidas para diversas aplicaciones y servicios. Visita Docker Hub para explorar imágenes o subir las tuyas.

Instalar Docker Engine en Debian

Para instalar Docker en Debian, sigue los pasos a continuación:

Desinstalar versiones antiguas de Docker (si las tienes):

sudo apt-get remove docker docker-engine docker.io containerd runc

Actualizar el sistema e instalar paquetes necesarios:

sudo apt-get update
sudo apt-get install \
  ca-certificates \
  curl \
  gnupg \
  lsb-release

Agregar la clave GPG oficial de Docker:

sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

Agregar el repositorio de Docker a tu lista de fuentes:

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Actualizar la lista de paquetes y realizar la instalación:

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Verificar la instalación:

sudo docker --version

Este procedimiento instala Docker Engine en tu sistema Debian. Si deseas instalar Docker en otras distribuciones como Ubuntu, CentOS, Fedora o Arch Linux, puedes visitar la página oficial de instalación de Docker para obtener instrucciones detalladas.

Comandos básicos de Docker

A continuación, algunos comandos esenciales para comenzar a trabajar con Docker, utilizando Apache como ejemplo.

1. docker --version

Verifica que Docker está instalado correctamente y muestra la versión actual.

docker --version

2. docker pull

Descarga una imagen desde Docker Hub. Por ejemplo, para la imagen del servidor Apache:

docker pull httpd

3. docker run

Este comando ejecuta un contenedor basado en una imagen. Puedes personalizar la ejecución con opciones como el puerto y el nombre del contenedor.

docker run -d -p 80:80 --name mi-apache httpd

4. docker ps

Muestra los contenedores en ejecución.

docker ps

5. docker stop

Detiene un contenedor en ejecución.

docker stop mi-apache

6. docker rm

Elimina un contenedor detenido.

docker rm mi-apache

7. docker exec

Permite ejecutar comandos dentro de un contenedor en funcionamiento.

docker exec -it mi-apache bash

8. docker-compose

Docker Compose permite gestionar múltiples contenedores con un archivo YAML. A continuación, te mostramos un ejemplo básico de docker-compose.yml:

version: '3'
services:
  web:
    image: httpd
    ports:
      - "80:80"

9. docker cp

Copia archivos entre tu sistema local y el contenedor:

docker cp /ruta/local/archivo.html mi-apache:/usr/local/apache2/htdocs/

Montaje de volúmenes

El montaje de volúmenes permite compartir directorios entre el host y el contenedor, útil para mantener persistencia de datos o hacer desarrollo en tiempo real.

docker run -d -p 80:80 --name mi-apache -v /ruta/local/html:/usr/local/apache2/htdocs/ httpd

Contenedores interactivos

Los contenedores interactivos te permiten interactuar directamente con el contenedor a través de una terminal. Esto es útil para pruebas y depuración en tiempo real.

Ejemplo de contenedor interactivo

Para iniciar un contenedor en modo interactivo, puedes usar el siguiente comando:

docker run -it ubuntu /bin/bash

Este comando te dará acceso a una terminal dentro del contenedor basado en la imagen de Ubuntu.

Creación de imágenes personalizadas con Dockerfile

Un Dockerfile es un archivo de texto que contiene instrucciones para construir una imagen de Docker personalizada. Puedes utilizar Dockerfile para instalar paquetes, copiar archivos y personalizar el comportamiento de la imagen.

Dockerfile basado en Ubuntu con Apache2

A continuación, te presentamos un ejemplo más simple de Dockerfile que utiliza Ubuntu como imagen base e instala Apache2.

FROM ubuntu:20.04

# Establece el mantenedor de la imagen
LABEL maintainer="tu_email@dominio.com"

# Actualiza los paquetes e instala Apache2
RUN apt-get update && \\
    apt-get upgrade -y && \\
    apt-get install -y apache2

# Expone el puerto 80 para HTTP
EXPOSE 80

# Copia un archivo HTML personalizado al directorio raíz de Apache
COPY ./mi-index.html /var/www/html/index.html

# Inicia Apache cuando el contenedor se ejecute
CMD ["apachectl", "-D", "FOREGROUND"]

Pasos para construir y ejecutar la imagen

  1. Guardar el Dockerfile: Crea un archivo llamado Dockerfile en el directorio de tu proyecto.
  2. Crear el archivo HTML: Agrega un archivo mi-index.html en el mismo directorio con el siguiente contenido: <!DOCTYPE html> <html lang="es"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Mi Servidor Apache en Docker</title> </head> <body> <h1>¡Bienvenido a mi servidor Apache en Docker!</h1> </body> </html>
  3. Construir la imagen: Navega al directorio donde está el Dockerfile y ejecuta el siguiente comando para construir la imagen: docker build -t mi-apache-ubuntu .
  4. Ejecutar el contenedor: Después de construir la imagen, ejecuta el contenedor con el siguiente comando: docker run -d -p 80:80 mi-apache-ubuntu

Cómo eliminar imágenes de Docker

Es importante gestionar las imágenes y contenedores no utilizados para liberar espacio en tu sistema. A continuación, te mostramos cómo eliminar imágenes en Docker.

1. Ver todas las imágenes en el sistema

Para listar todas las imágenes almacenadas en tu sistema, usa el siguiente comando:

docker images

2. Eliminar una imagen específica

Para eliminar una imagen específica, primero necesitas conocer su ID o nombre, que puedes obtener con el comando anterior. Luego, usa el siguiente comando para eliminar la imagen:

docker rmi <image_id>

3. Eliminar todas las imágenes no utilizadas (dangling images)

Las dangling images son imágenes que no están asociadas a ningún contenedor, generalmente creadas cuando actualizas imágenes. Para eliminarlas, usa el siguiente comando:

docker image prune

4. Eliminar todas las imágenes de Docker

Si deseas eliminar todas las imágenes de Docker, puedes ejecutar este comando:

docker rmi $(docker images -q)