Cómo elegir un VPS para Docker sin perder los datos
Docker facilita una entrega reproducible, pero un contenedor no convierte los datos en persistentes ni protege el host. El VPS debe ofrecer virtualización compatible, memoria para todos los servicios, disco controlado y una estrategia explícita para volumes, bases y actualizaciones.

Qué virtualización admite Docker
KVM es la opción más predecible: ofrece núcleo propio, cgroups, namespaces y libertad para actualizar Docker. En contenedores de sistema como OpenVZ algunas funciones, módulos o límites pueden estar restringidos. Confirma expresamente que el proveedor permite Docker, overlay networking y las reglas de firewall necesarias.
Cuántos recursos necesitan los contenedores
| Conjunto | Inicio razonable | Riesgo principal |
|---|---|---|
| Proxy y una app | 1–2 vCPU, 2 GB RAM | Picos durante el despliegue |
| App, PostgreSQL y Redis | 2 vCPU, 4 GB RAM | Competencia por RAM |
| Varios proyectos | 4+ vCPU, 8+ GB RAM | Falta de límites por servicio |
Suma el RSS real de los procesos, la base, la caché y el sistema. Deja margen para arrancar una versión nueva junto a la anterior. Define límites y reservas por contenedor; sin ellos, una fuga de memoria puede derribar todo el host.
Por qué Docker llena el disco
Imágenes antiguas, capas de compilación, logs JSON, volumes huérfanos y caché crecen sin aparecer en el tamaño del código. Separa los datos importantes de lo recreable, configura rotación de logs y revisa periódicamente el uso de Docker. No ejecutes una limpieza automática agresiva sin saber qué volumes siguen siendo necesarios.
- NVMe para base y muchos archivos pequeños;
- 20–30 % de espacio libre;
- logs con tamaño y número de archivos limitados;
- métricas de disco e inodos;
- volumes con propietario y política documentados.
Esquema práctico de despliegue
Usa imágenes versionadas construidas en CI, no en producción. Docker Compose describe redes, volumes, healthchecks y variables; un proxy publica solo 80/443. Descarga la nueva imagen, inicia servicios dependientes, ejecuta migraciones compatibles, comprueba health y cambia el tráfico. Conserva la versión anterior para volver atrás.
Evita latest: no identifica el código ejecutado. Fija versión o digest y actualiza conscientemente. Kubernetes en un solo VPS añade complejidad sin eliminar la única máquina; Compose suele ser suficiente.
Actualizaciones sin sorpresas
Actualiza primero en un entorno de prueba y separa el cambio de imagen de una migración destructiva de base. Un healthcheck debe validar que la aplicación puede atender tráfico, no solo que el proceso existe. Conserva el digest anterior, automatiza el rollback y elimina imágenes antiguas únicamente después de cerrar la ventana de observación.
Copias de volumes y bases de datos
Copiar un volume de una base mientras escribe puede producir un estado incoherente. Usa pg_dump, mysqldump u otra herramienta oficial, y guarda el resultado junto con archivos persistentes en un almacenamiento externo cifrado. Prueba la restauración en una red aislada. Un volumen no es una copia, y una imagen tampoco contiene los datos creados en ejecución.
Documenta qué servicio es dueño de cada volume, su ruta y orden de recuperación. Si el despliegue crea automáticamente un volume vacío con el mismo nombre esperado, puede parecer correcto mientras la aplicación arranca sin los datos históricos. La prueba debe comprobar registros reales, no solo que el contenedor esté en estado healthy.
Red y seguridad del host
No publiques PostgreSQL, Redis ni el socket de Docker. Quien controla /var/run/docker.sock suele poder controlar el host. Ejecuta procesos sin root cuando sea posible, elimina capabilities innecesarias, no incrustes secretos en la imagen y actualiza el sistema y las bases de imagen. Más detalles en seguridad de VPS.
Errores frecuentes
- Datos dentro de la capa del contenedor: desaparecen al recrearlo.
- Todos los puertos públicos: bases y paneles quedan expuestos.
- Sin límites: un servicio consume toda la RAM.
- Build en producción: usa CPU y disco durante el pico.
- Limpieza sin inventario: elimina volumes necesarios.
- Única copia local: no protege de perder el VPS.
Preguntas frecuentes
¿Basta 1 GB de RAM?
Para una sola app pequeña quizá; Docker, proxy y sistema dejan poco margen. 2 GB es un inicio más práctico.
¿Docker necesita IPv4 propio?
El host suele necesitar una dirección; los contenedores comparten redes internas.
¿Kubernetes en un VPS?
Normalmente no: no añade alta disponibilidad y aumenta el mantenimiento.
¿PostgreSQL puede vivir en Docker?
Sí, con volume persistente, límites, copia consistente y restauración probada.
¿Cuándo ampliar?
Cuando CPU, RAM, I/O o disco se acercan al límite de forma sostenida, no por un pico aislado.
También: Node.js y Python en VPS y copias verificables.
