Docker es una plataforma que permite crear, desplegar y ejecutar aplicaciones dentro de contenedores, proporcionando un entorno aislado y consistente.
Instalación de Docker
Instalar Docker en Windows
Descarga Docker Desktop desde el sitio oficial.
Instalar Docker en Linux
Para Ubuntu, puedes usar los siguientes comandos:
sudo apt update
sudo apt install docker.io
sudo systemctl start docker
sudo systemctl enable docker
Comprobar la versión de Docker
Verifica si Docker está instalado y muestra la versión actual.
docker --version
Imágenes de Docker
Listar imágenes locales
Muestra todas las imágenes descargadas en el sistema local.
docker images
Descargar una imagen
Descarga una imagen desde Docker Hub.
docker pull nombre_imagen
Eliminar una imagen
Elimina una imagen específica del sistema local.
docker rmi nombre_imagen
Buscar una imagen
Busca una imagen en Docker Hub desde la terminal.
docker search nombre_imagen
Construir una imagen desde un Dockerfile
Crea una nueva imagen a partir de un archivo Dockerfile
.
docker build -t nombre_imagen:etiqueta .
Ver el historial de una imagen
Muestra las capas de una imagen y cómo fue construida.
docker history nombre_imagen
Etiquetar una imagen
Añade una etiqueta a una imagen para referenciarla más fácilmente.
docker tag id_imagen nombre_imagen:etiqueta
Contenedores
Crear y ejecutar un contenedor
Ejecuta un contenedor a partir de una imagen especificada.
docker run nombre_imagen
Ejecutar un contenedor en segundo plano (detached mode)
Ejecuta un contenedor en segundo plano, útil para aplicaciones de larga duración.
docker run -d nombre_imagen
Asignar nombre a un contenedor
Especifica un nombre personalizado para el contenedor en el momento de su creación.
docker run --name mi_contenedor nombre_imagen
Ver contenedores en ejecución
Lista todos los contenedores que están actualmente ejecutándose.
docker ps
Ver todos los contenedores
Lista todos los contenedores, tanto en ejecución como detenidos.
docker ps -a
Detener un contenedor
Detiene la ejecución de un contenedor.
docker stop id_contenedor
Iniciar un contenedor detenido
Inicia un contenedor previamente detenido.
docker start id_contenedor
Eliminar un contenedor
Elimina un contenedor que ha sido detenido.
docker rm id_contenedor
Eliminar todos los contenedores detenidos
Elimina todos los contenedores que han sido detenidos.
docker rm $(docker ps -a -q)
Interacción con contenedores
Acceder a un contenedor en ejecución
Abre una terminal interactiva dentro de un contenedor en ejecución.
docker exec -it id_contenedor /bin/bash
Reiniciar un contenedor
docker restart id_contenedor
Mostrar logs de un contenedor
Muestra los registros de salida de un contenedor.
docker logs id_contenedor
Copiar archivos desde/hacia un contenedor
Copia archivos desde el sistema host al contenedor o viceversa.
docker cp ruta_host id_contenedor:/ruta_contenedor
Detener todos los contenedores en ejecución
Detiene todos los contenedores que están activos.
docker stop $(docker ps -q)
Dockerfile
Un Dockerfile
es un archivo de texto que contiene todas las instrucciones para construir una imagen de Docker.
Crear un Dockerfile
Un archivo Dockerfile
define el entorno de ejecución de una aplicación dentro de un contenedor.
FROM
: Define la imagen base.RUN
: Ejecuta comandos en la construcción de la imagen.COPY
: Copia archivos del host al contenedor.WORKDIR
: Establece el directorio de trabajo.CMD
: Especifica el comando que se ejecutará cuando el contenedor se inicie.
# Usar una imagen base
FROM ubuntu:20.04
# Instalar dependencias
RUN apt-get update && apt-get install -y \
python3 \
python3-pip
# Copiar archivos al contenedor
COPY . /app
# Establecer el directorio de trabajo
WORKDIR /app
# Comando por defecto
CMD ["python3", "app.py"]
Construir imagen a partir de un Dockerfile
Crea una imagen a partir de un Dockerfile.
docker build -t nombre_imagen .
Ignorar archivos con .dockerignore
Define los archivos que no deben ser copiados en la imagen Docker.
node_modules
.git
.env
Redes en Docker
Crear una nueva red
Crea una red personalizada.
docker network create nombre_red
Listar redes de Docker
Muestra todas las redes creadas en Docker.
docker network ls
Ejecutar un contenedor en una red específica
docker run -d --name nombre-contenedor --network nombre-red nombre-imagen
Conectar un contenedor a una red
Conecta un contenedor a una red específica.
docker network connect nombre_red id_contenedor
Desconectar un contenedor de una red
Desconecta un contenedor de una red.
docker network disconnect nombre_red id_contenedor
Eliminar una red
Elimina una red creada previamente.
docker network rm nombre_red
Volúmenes en Docker
Crear un volumen
Crea un volumen persistente que puede ser compartido entre contenedores.
docker volume create nombre_volumen
Montar un volumen en un contenedor
Monta un volumen en un contenedor para almacenar datos persistentes.
docker run -d --name mi_contenedor -v nombre_volumen:/ruta_dentro_contenedor nombre_imagen
Listar volúmenes existentes
Muestra todos los volúmenes creados en el sistema.
docker volume ls
Eliminar un volumen
Elimina un volumen de Docker.
docker volume rm nombre_volumen
Docker Compose
Docker Compose es una herramienta que permite definir y ejecutar aplicaciones Docker de múltiples contenedores.
Ejemplo básico de docker-compose.yml
version: '3'
services:
web:
image: nginx
ports:
- "8080:80"
db:
image: postgres
environment:
POSTGRES_PASSWORD: ejemplo
Iniciar servicios definidos en docker-compose.yml
Inicia los servicios definidos en el archivo docker-compose.yml
.
docker-compose up
Iniciar servicios en segundo plano (detached mode)
Inicia los servicios en segundo plano.
docker-compose up -d
Detener todos los servicios
Detiene la ejecución de todos los servicios definidos.
docker-compose down
Ver logs de servicios
Muestra los logs de todos los servicios en ejecución.
docker-compose logs
Escalar servicios
Aumenta el número de instancias de un servicio.
docker-compose up --scale servicio=numero
Optimización y Limpieza
Limpiar recursos
Eliminar contenedores detenidos, imágenes no utilizadas y volúmenes sin usar
Limpia automáticamente recursos no utilizados.
docker system prune
Eliminar todas las imágenes no usadas
Elimina todas las imágenes que no están en uso por ningún contenedor.
docker image prune -a
Eliminar volúmenes no usados
Elimina todos los volúmenes que no están en uso.
docker volume prune
Monitorización
Ver el uso de recursos de un contenedor
Muestra el uso de CPU, memoria y otros recursos de un contenedor en tiempo real.
docker stats id_contenedor
Ver los detalles del sistema Docker
Proporciona información sobre el estado de Docker, como recursos y uso del sistema.
docker info
Docker Swarm
Docker Swarm es una herramienta para crear y gestionar clusters de Docker.
Iniciar un Swarm
docker swarm init
Crear un Servicio
docker service create --name mi-servicio nombre-imagen
Escalar un Servicio
docker service scale mi-servicio=5
Detener un Swarm
docker swarm leave --force