🐳 Instalar Docker en un VPS#
Aprende a instalar y configurar Docker y Docker Compose en tu VPS para desplegar tus aplicaciones en contenedores de manera simple y eficiente.
🎯 Objetivos#
- 🐳 Instalar Docker Engine en Ubuntu/Debian
- 📦 Instalar Docker Compose
- 🛠️ Dominar los comandos esenciales
- 🌐 Entender redes y volúmenes
- 🔧 Resolver problemas comunes
🧰 Prerequisitos#
- VPS con Ubuntu 20.04+ o Debian 11+
- Acceso root o sudo
- Conexión SSH activa
- Al menos 2 GB de RAM recomendado
- 10 GB de espacio libre en disco mínimo
1️⃣ Preparación del sistema#
📦 Actualización y limpieza#
# Actualización completa del sistema sudo apt update && sudo apt upgrade -y # Eliminar versiones antiguas de Docker (si están presentes) for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done
2️⃣ Instalación de Docker#
📥 Instalación con script oficial#
# Descargar script de instalación oficial curl -fsSL https://get.docker.com -o get-docker.sh # Ejecutar script de instalación sh get-docker.sh # Verificación de la instalación sudo systemctl status docker
✅ Prueba de instalación#
# Prueba con un contenedor Hello World sudo docker run hello-world # Verificación de versión sudo docker --version sudo docker compose version
👥 Configuración de usuarios#
# Agregar tu usuario al grupo Docker (evita sudo) sudo usermod -aG docker $USER # Aplicar cambios (desconexión/reconexión o) newgrp docker # Prueba sin sudo docker run hello-world
3️⃣ Instalación y uso de Docker Compose#
📦 Verificación de Docker Compose#
Docker Compose ahora se incluye como plugin:
# Verificación de la instalación docker compose version # Ayuda de Docker Compose docker compose --help
🚀 Primera prueba práctica#
Probemos Docker con un servidor web simple:
# Lanzar un servidor Nginx docker run -d --name mi-nginx -p 8080:80 nginx # Verificar que el contenedor funcione docker ps # Prueba en el navegador: http://tu-ip:8080 # Deberías ver la página de bienvenida de Nginx # Parar y eliminar el contenedor docker stop mi-nginx docker rm mi-nginx
📝 Ejemplo simple con Docker Compose#
Creemos un archivo docker-compose.yml
básico:
# Crear un directorio de prueba mkdir ~/test-docker && cd ~/test-docker # Crear archivo docker-compose.yml cat > docker-compose.yml << 'EOF' version: "3.8" services: web: image: nginx ports: - "8080:80" EOF # Lanzar con Docker Compose docker compose up -d # Verificación docker compose ps # Parar y limpiar docker compose down
4️⃣ Comandos esenciales de Docker#
📦 Gestión de contenedores#
# Listar contenedores activos docker ps # Listar todos los contenedores (activos y parados) docker ps -a # Iniciar un contenedor docker start nombre_contenedor # Parar un contenedor docker stop nombre_contenedor # Reiniciar un contenedor docker restart nombre_contenedor # Eliminar un contenedor docker rm nombre_contenedor # Eliminar todos los contenedores parados docker container prune
🖼️ Gestión de imágenes#
# Listar imágenes docker images # Descargar una imagen docker pull nginx:latest # Eliminar una imagen docker rmi nginx:latest # Eliminar imágenes no utilizadas docker image prune
📊 Monitoreo y logs#
# Logs de un contenedor docker logs nombre_contenedor # Logs en tiempo real docker logs -f nombre_contenedor # Estadísticas de contenedores docker stats # Información del sistema Docker docker system info # Espacio en disco utilizado docker system df
🔧 Acceso a contenedores#
# Ejecutar un comando en un contenedor docker exec -it nombre_contenedor bash # Copiar archivos hacia/desde un contenedor docker cp archivo.txt nombre_contenedor:/path/to/destination docker cp nombre_contenedor:/path/to/file.txt ./
🐙 Comandos de Docker Compose#
# Iniciar servicios docker compose up -d # Ver estado de servicios docker compose ps # Ver logs docker compose logs # Parar servicios docker compose down # Reconstruir e iniciar docker compose up --build -d
5️⃣ Redes y volúmenes de Docker#
🌐 Gestión de redes#
# Listar redes docker network ls # Crear una red docker network create mi-red # Conectar un contenedor a una red docker network connect mi-red nombre_contenedor # Inspeccionar una red docker network inspect mi-red # Eliminar una red docker network rm mi-red
💾 Gestión de volúmenes#
# Listar volúmenes docker volume ls # Crear un volumen docker volume create mi-volumen # Inspeccionar un volumen docker volume inspect mi-volumen # Eliminar un volumen docker volume rm mi-volumen # Eliminar volúmenes no utilizados docker volume prune
6️⃣ Solución de problemas#
🔍 Problemas comunes#
Error: "Cannot connect to Docker daemon"
# Verificación del servicio sudo systemctl status docker # Reiniciar si es necesario sudo systemctl restart docker # Verificación de permisos groups $USER
Error: "No space left on device"
# Verificación del espacio en disco df -h # Limpieza de Docker docker system prune -a # Verificar logs voluminosos sudo du -sh /var/lib/docker/containers/*/
El contenedor no arranca
# Verificación de logs docker logs nombre_contenedor # Verificación de la configuración docker inspect nombre_contenedor # Prueba en modo interactivo docker run -it --entrypoint /bin/bash nombre_imagen
📋 Logs y diagnósticos#
# Logs del daemon Docker sudo journalctl -fu docker.service # Información detallada del sistema docker system info # Eventos de Docker en tiempo real docker events # Inspección detallada de un contenedor docker inspect nombre_contenedor
✅ Resumen de la instalación#
Tu instalación de Docker ahora está completa con:
- 🐳 Docker Engine + Docker Compose instalados y operativos
- 🚀 Primeras pruebas realizadas con éxito
- 🔧 Comandos esenciales dominados
- 🌐 Gestión de redes y volúmenes configurada