Saltar al contenido principal

Docker

Instalación

Arch Linux

  1. Opcional. Actualizar sistema
sudo pacman -Syu
  1. Instalar Docker
sudo pacman -S docker #docker-compose
  1. Administrar servicio
sudo systemctl start docker   # Iniciar
sudo systemctl enable docker # Iniciar automaticamente con el OS

# Opcional
sudo systemctl status docker # Verificar estado
sudo systemctl restart docker # Reiniciar servicio
  1. Opcional. Añadir usuario al grupo docker (para evitar usar sudo en cada comando)
# Agregar usuario al grupo docker
sudo usermod -aG docker $USER

# Reiniciar sesion o usar:
newgrp docker

Windows con Docker Desktop

  1. Habilitar WSL e instalar distribución
wsl --install
wsl --install Debian
wsl -l              # Distribuciones instaladas
wsl --list --online # Distribuciones disponibles
  1. Ingresar al nuevo sistema para configurar nombre y contraseña del nuevo usuario
  2. Actualizar el sistema, sudo apt update && sudo apt upgrade o sudo pacman -Syu
  3. Descargar e instalar Docker Desktop

Imágenes

Descargar imágenes

# Sintaxis
docker pull <image-name:version>

# Ejemplo
docker pull postgres:17.4

Contenedores

Crear contenedor

# Sintaxis
docker run --name <container-name> -p <host>:<container> -e <VAR_NAME=123> -d <image-name:version>

# Ejemplo
docker run --name pgsql-175 -p 5432:5432 -e POSTGRES_PASSWORD=123456 -d postgres:17.5
  • Docker descarga la imagen si no está instalada y luego crea el contenedor
  • Crea un contenedor con el nombre especificado y la imagen a usar (mongo, postgres, etc.)
  • Si no se especifica un nombre, Docker genera uno aleatorio
  • Si no se exponen los puertos, no se podrá acceder al contenedor desde el host (ej. sin acceso a la base de datos)

Generalmente se utiliza docker run para:

  • Bases de datos de desarrollo, por ejemplo, levantar un PostgreSQL o MongoDB temporalmente
  • Probar imágenes oficiales sin necesidad de configurar docker-compose
  • Probar configuraciones antes de escribir un docker-compose.yml

Alternativamente, para proyectos personales o con varios servicios se utiliza:

  • Docker Compose (docker-compose.yml) para definir y orquestar múltiples contenedores
  • Dockerfile para construir imágenes personalizadas

Administrar contenedor e imagen

docker ps           # Contenedores en ejecución
docker ps -a # Todos los contenedores (ejecutándose y detenidos)
docker ps -q # Solo IDs de contenedores en ejecución
docker ps -aq # Solo IDs de todos los contenedores
docker start <container-name>     # Iniciar contenedor
docker restart <container-name> # Reiniciar contenedor
docker update --restart unless-stopped <container-name> # Inicio automático
docker stop <container-name> # Detener contenedor
docker rm <container-name> # Eliminar contenedor (primero detenerlo)

Comandos útiles para limpieza

docker images                # Listar todas las imágenes
docker images -a # Incluir imágenes intermedias
docker images -q # Solo IDs de imágenes
docker images postgres # Filtrar por nombre
docker images postgres:17* # Filtrar por etiqueta
docker rmi <image-name>         # Eliminar imagen
docker rmi $(docker images -q) # Eliminar TODAS las imágenes
docker rmi $(docker images -f "dangling=true" -q) # Eliminar SOLO imágenes sin etiqueta
docker image prune # Elimina imágenes "dangling" (sin etiqueta/nombre)
docker image prune -a # Elimina imágenes que no tienen contenedores asociados