Si alguna vez instalaste una app en tu VPS y terminaste peleando con versiones de librerías que chocan entre sí, Docker resuelve exactamente ese problema: empaqueta tu aplicación junto con todo lo que necesita para correr, aislada del resto del sistema. No es magia, es un contenedor — y en un VPS con acceso root, es una de las herramientas más útiles que puedes aprender.
Qué es Docker y por qué te conviene en un VPS
Docker empaqueta una aplicación junto con sus dependencias (librerías, versión de lenguaje, variables de entorno) en una unidad llamada contenedor. A diferencia de una máquina virtual, un contenedor no simula hardware completo ni arranca su propio sistema operativo: comparte el kernel de tu VPS, así que arranca en segundos y consume una fracción de los recursos. Esto te permite correr varias aplicaciones con requisitos distintos (una app en Node 18, otra en PHP 8.1, una base de datos) en el mismo servidor sin que se pisen entre sí.
Instalar Docker en tu VPS paso a paso
En un VPS con Ubuntu o Debian, la forma más confiable es usar el script oficial de conveniencia de Docker, que detecta tu distribución y configura los repositorios correctos automáticamente:
| Paso | Comando |
|---|---|
| Descargar el script oficial | curl -fsSL https://get.docker.com -o get-docker.sh |
| Ejecutarlo | sudo sh get-docker.sh |
| Verificar la instalación | docker --version |
| Permitir tu usuario sin sudo | sudo usermod -aG docker $USER |
Después del último paso necesitas cerrar sesión y volver a entrar (o reiniciar la sesión SSH) para que el cambio de grupo tenga efecto.
Comandos esenciales para tus primeros contenedores
Con Docker instalado, estos son los comandos que vas a usar el 90% del tiempo:
docker run -d -p 80:80 nginx— descarga y ejecuta un contenedor Nginx en segundo plano, mapeando el puerto 80 del VPS al puerto 80 del contenedor.docker ps— lista los contenedores que están corriendo ahora mismo.docker logs <nombre>— muestra la salida de un contenedor, indispensable para diagnosticar errores.docker stop <nombre>/docker start <nombre>— detiene o reinicia un contenedor sin borrarlo.docker exec -it <nombre> bash— abre una terminal dentro del contenedor, útil para inspeccionar archivos o ejecutar comandos puntuales.
Docker Compose: gestionar varios contenedores juntos
La mayoría de aplicaciones reales no son un solo contenedor — son una app más una base de datos, más quizás un caché. Docker Compose te deja definir todo ese conjunto en un solo archivo docker-compose.yml y levantarlo con un único comando (docker compose up -d), en vez de escribir comandos docker run larguísimos a mano cada vez. También se encarga de crear una red interna para que los contenedores se comuniquen entre sí por nombre, sin exponer la base de datos al exterior.
node:18-alpine) en lugar de latest para que un cambio inesperado no rompa tu producción.Buenas prácticas de seguridad
- No corras contenedores como root dentro de la imagen si no es estrictamente necesario — la mayoría de imágenes oficiales ya definen un usuario sin privilegios.
- Limita los recursos de cada contenedor con
--memoryy--cpuspara que uno con fugas de memoria no tumbe todo el VPS. - Nunca expongas puertos de bases de datos al exterior — dejá que solo otros contenedores en la misma red interna les hablen.
- Actualiza tus imágenes con regularidad (
docker pull) para recibir parches de seguridad del software base.
Docker no reemplaza la necesidad de un buen VPS por debajo — sigue necesitando RAM y CPU reales para correr tus contenedores — pero sí te da una forma mucho más ordenada y portable de desplegar aplicaciones que instalar todo directo sobre el sistema operativo.