¿Qué es Docker? Planes de VPS para ejecutar cargas de trabajo en contenedores

Extracto / Introducción

Docker es una plataforma de código abierto que empaqueta aplicaciones y sus dependencias en unidades aisladas llamadas contenedores. Para ejecutar Docker en InMotion Hosting, necesitas un Cloud VPS con acceso de root o un servidor dedicado, ya que ambos te ofrecen control a nivel del kernel.WordPress compartidos, de revendedor yWordPress cPanel no son compatibles con el daemon de Docker. En este artículo se explica cómo funcionan los contenedores, qué configuraciones de VPS de InMotion son las adecuadas y cómo dimensionar tu entorno para que funcione de verdad.

¿Qué es Docker en pocas palabras?

Docker empaqueta una aplicación con todo lo que necesita para ejecutarse, incluyendo el entorno de ejecución, las bibliotecas, las herramientas del sistema y los archivos de configuración. El resultado es un contenedor que se comporta igual tanto en el portátil de un desarrollador como en un servidor VPS de pruebas y en un servidor de producción.

Los contenedores no son máquinas virtuales. Una máquina virtual emula un sistema operativo completo sobre un hipervisor. Un contenedor comparte el núcleo del host y aísla únicamente el espacio de usuario mediante primitivas de Linux como los espacios de nombres y los cgroups. Según la documentación oficial de Docker, este diseño te permite ejecutar muchos contenedores en un solo host con una sobrecarga mucho menor que si ejecutaras el mismo número de máquinas virtuales.

Los elementos fundamentales del ecosistema son sencillos:

  • Docker Engine: el demonio que crea y ejecuta contenedores
  • Imágenes: plantillas de solo lectura que contienen tu aplicación y sus dependencias
  • Contenedores: instancias en ejecución de una imagen
  • Docker Compose: una herramienta para definir aplicaciones con varios contenedores en un único archivo YAML
  • Registros: almacenamiento de imágenes, siendo Docker Hub el predeterminado público

¿En qué se diferencia Docker del alojamiento web tradicional?

El alojamiento tradicional instala el software directamente en el sistema de archivos del servidor. PHP, MySQL y Apache se encuentran en /etc y /usr, y comparten bibliotecas con el resto de programas del servidor. Actualizar una aplicación puede provocar fallos en otra. Esta es una de las razones por las que los planes de alojamiento compartido limitan lo que los usuarios pueden instalar.

Docker da un giro a ese modelo. Cada contenedor trae sus propias bibliotecas y su propio entorno de ejecución. Una aplicación de Node 18 y otra de Node 22 pueden ejecutarse al mismo tiempo sin entrar en conflicto, ya que cada una lleva su propia versión dentro de la imagen. También puedes desmontar un contenedor en segundos y sustituirlo por una imagen que sabes que funciona bien, lo cual es mucho más limpio que reinstalar paquetes en un servidor en producción.

Esa es precisamente la clave: el aislamiento. Los contenedores te ofrecen una unidad de implementación reproducible. La misma imagen que has probado localmente es la que se ejecuta en producción.

¿Por qué usar contenedores en lugar de instalar el software directamente?

Algunas razones prácticas que surgen en proyectos reales:

  • Fijación de versiones que realmente funciona: las imágenes de contenedor bloquean las versiones exactas de PHP, Node, Python, Postgres o cualquier otro componente del que dependa tu pila. Se acabaron las actualizaciones accidentales de paquetes que dejan un sitio web en línea fuera de servicio.
  • Incorporación más rápida: un desarrollador que se incorpore a tu equipo puede ejecutar «docker compose up» y tener todo el entorno en marcha en cuestión de minutos, en lugar de pasarse medio día buscando dependencias.
  • Revertidos más sencillos: si una implementación sale mal, puedes volver a la etiqueta de imagen anterior. No hace falta desinstalar y volver a instalar paquetes en el host.
  • Servidores de alojamiento más limpios: tu VPS se mantiene minimalista. El servidor de alojamiento ejecuta Docker, un cortafuegos y SSH. Todo lo demás se ejecuta dentro de contenedores.

Esa previsibilidad es la razón por la que las agencias y los equipos de SaaS han trasladado muchas de sus herramientas internas, entornos de prueba y microservicios a contenedores.

¿Qué planes VPS de InMotion son compatibles con Docker?

La respuesta corta es cualquier plan que te ofrezca acceso de root en una distribución de Linux compatible. En la oferta de InMotion, eso significa Cloud VPS, que se aprovisiona en AlmaLinux 9, Ubuntu 22.04 LTS o Debian 12. Las tres son plataformas ideales para Docker Engine y Docker Compose.

Aquí tienes una comparación de los principales tipos de planes para cargas de trabajo en contenedores:

Tipo de planAcceso Raíz¿Compatible con Docker?Notas
Alojamiento compartido (Launch, Pro)NoNoNo hay control de demonios, el kernel se comparte con otras cuentas
WordPress (cPanel)NoNoPila de uso único, sin compatibilidad con contenedores
Alojamiento para revendedoresNoNoDiseñado para cPanel , no para contenedores
VPS en la nube (sin gestión)La elección perfecta. AlmaLinux 9, Ubuntu 22.04 o Debian 12
VPS gestionado (cPanel)Sí (con algunas salvedades)Es posible, pero no es lo idealcPanel Docker no se integran bien
Servidores dedicadosIdeal para implementaciones de contenedores de alta densidad

Un VPS en la nube es el punto de partida ideal para la mayoría de los equipos de desarrollo. Dispones de una instalación limpia de Linux, acceso root completo y ningún panel de control preinstalado que te complique las cosas. Instala Docker Engine siguiendo las instrucciones oficiales de Docker para tu distribución y estarás listo en menos de diez minutos.

¿Qué hay de los VPS gestionados con cPanel?

Los planes de VPS gestionados de InMotion utilizan cPanel WHM, lo cual es ideal para alojar sitios web y correo electrónico tradicionales, pero complica un poco el trabajo con contenedores. cPanel para controlar directamente Apache, PHP-FPM, MySQL, exim y otros servicios. Aunque técnicamente es posible añadir Docker encima, ya que sigues teniendo acceso de root, lo que ocurre es que estás ejecutando dos sistemas de gestión que compiten entre sí en el mismo servidor.

En la práctica, los equipos que quieren tanto un cPanel gestionado como contenedores suelen ejecutarlos en máquinas distintas. Un patrón habitual: un VPS cPanel para los sitios web de los clientes, más un Cloud VPS más pequeño para herramientas basadas en Docker, como una instancia privada de Git, una pila de monitorización o un entorno de pruebas.

Si solo tienes presupuesto para un servidor y quieres contenedores, olvídate del panel de control y opta por un Cloud VPS.

VPS en la nube frente a servidor dedicado para cargas de trabajo en contenedores

Un VPS en la nube es una infraestructura virtualizada que se extrae de un servidor más grande. Compartes el hardware subyacente con otros usuarios, pero tienes asignaciones garantizadas de CPU y RAM. Un servidor dedicado es una máquina física completa que se te asigna exclusivamente a ti.

En el caso de los contenedores, la elección suele depender de los requisitos de densidad y aislamiento:

  • El VPS en la nube es ideal para ejecutar unos cuantos contenedores por proyecto, entornos de prueba o pequeñas cargas de trabajo de producción. Puedes escalar verticalmente pasando a un plan superior cuando aumente el número de contenedores o el uso de recursos.
  • Los servidores dedicados son la mejor opción cuando necesitas ejecutar docenas de contenedores, alojar bases de datos que se benefician del NVMe local NVMe o cumplir requisitos de cumplimiento normativo que prohíben el uso de hipervisores compartidos. El plan Essential de InMotion (99,99 $ al mes) incluye 64 GB de RAM DDR4 y dosSSD NVMe de 1,92 TB, lo cual ofrece capacidad suficiente para una flota de contenedores considerable.

InMotion utiliza RAID por software a través de mdadm en todos estos planes, lo cual es habitual en entornos de servidores Linux y funciona sin necesidad de ninguna configuración especial para Docker.

Contenedores frente a máquinas virtuales

Requisitos para ejecutar Docker en un VPS

El consumo básico es modesto. El propio Docker Engine necesita unos 200 MB de RAM y un consumo mínimo de CPU cuando está inactivo. El consumo real de recursos recae en los contenedores que ejecutes sobre él.

Un buen punto de partida para calcular las dimensiones:

  • Servicios pequeños ( nginx, redis, API ligeras): 50-200 MB de RAM por contenedor
  • Aplicaciones web en Node.js o Python: entre 150 y 500 MB , dependiendo del marco de trabajo
  • PHP-FPM con un solo WordPress : 256-512 MB
  • PostgreSQL o MySQL con tráfico moderado: de 512 MB a 2 GB como mínimo
  • Aplicaciones autohospedadas como Nextcloud o Mattermost: 1-2 GB

El uso del disco también es importante. Las imágenes de contenedores, los volúmenes y la caché de compilación se acumulan rápidamente. Reserva al menos entre 30 y 50 GB en un Cloud VPS básico y contrólalo con el comando `df` de Docker (documentación).

También necesitarás:

  • Una distribución de Linux compatible. InMotion Cloud VPS ofrece AlmaLinux 9, Ubuntu 22.04 LTS y Debian 12, todas ellas compatibles oficialmente con Docker
  • Acceso a la red de salida para descargar imágenes de los registros
  • Una clave SSH para un acceso seguro (la autenticación con contraseña debe estar desactivada)
  • Una estrategia de reglas de firewall, ya que Docker manipula iptables y puede entrar en conflicto con configuraciones de firewall poco sofisticadas

Casos de uso habituales de Docker en un VPS

Algunos patrones que se repiten con frecuencia:

  • Herramientas de desarrollo autohospedadas: GitLab, Gitea, Drone CI, Vaultwarden y otras similares se implementan sin problemas como contenedores
  • Servidores de aplicaciones: API de Node .js, Python o Go detrás de un proxy inverso
  • Entornos de prueba: crea una copia exacta del entorno de producción a partir del mismo conjunto de imágenes
  • Arquitecturas de microservicios: varios servicios pequeños coordinados mediante Docker Compose
  • Proxy inverso con SSL automático: Traefik o Caddy en un contenedor se encarga de Ingress y de los certificados de Let’s Encrypt para todo lo demás en el servidor
  • Aislamiento de bases de datos: ejecuta instancias independientes PostgreSQL MySQL para cada proyecto sin saturar el servidor

En el caso de las agencias, un único VPS en la nube suele alojar un proxy inverso Traefik, además de una docena de entornos de prueba para clientes, cada uno aislado en su propio conjunto de contenedores. Las agencias que prestan servicio a varios clientes también deberían echar un vistazo al Programa de socios para agencias de InMotion, que ofrece ventajas de alojamiento por niveles.

Factores de rendimiento que afectan a las cargas de trabajo en contenedores

El rendimiento de los contenedores en un VPS no solo depende de las especificaciones técnicas. Hay algunos aspectos a tener en cuenta:

  • E/S de disco: Los contenedores que realizan muchas operaciones de escritura (bases de datos, agregadores de registros) se benefician de los planes de VPS NVMe. Los discos mecánicos suponen un cuello de botella incluso con mucha RAM.
  • Presión de memoria: cuando se supera la RAM disponible, el núcleo empieza a utilizar el intercambio de memoria o el «OOM killer» cierra los contenedores. Ninguna de las dos opciones es buena. Aumenta la capacidad antes de llegar al 80 % de uso sostenido.
  • Red: El tráfico entre contenedores en el mismo servidor se mantiene en la interfaz de bucle invertido y es rápido. El tráfico entre servidores depende de la red de tu VPS. A las aplicaciones en tiempo real les importa esto; a las aplicaciones CRUD, por lo general, no.
  • Tiempo de apropiación de la CPU: en una infraestructura de hipervisor compartida, fíjate en el %st en top o vmstat. Si el tiempo de apropiación se mantiene por encima de un par de puntos porcentuales, significa que el host está sobrecargado.
  • Almacenamiento en caché de capas de imágenes: Generar imágenes en el mismo VPS que tu caché de registro es mucho más rápido que descargarlas de una fuente remota cada vez. Usa compilaciones en varias etapas para mantener las imágenes de producción ligeras.

Aspectos relacionados con el coste más allá del precio de venta

La cuota mensual del VPS es solo una parte de la factura. Otros conceptos que conviene tener en cuenta a la hora de hacer el presupuesto:

  • Copias de seguridad: El plan Premier Care para VPS de InMotion incluye 300 GB de almacenamiento para copias de seguridad, lo que cubre la mayoría de las cargas de trabajo en contenedores. Asegúrate de hacer copias de seguridad de los volúmenes, no solo del sistema de archivos del host.
  • Exceso de ancho de banda: la mayoría de las implementaciones de contenedores tienen un tráfico de salida moderado, pero los procesos de integración continua con muchas imágenes o los servidores multimedia pueden llegar al límite.
  • Almacenamiento de registros de imágenes: el plan gratuitode Docker Hub limita la frecuencia de descargas. Una cuenta de equipo o un registro autohospedado en el propio VPS evita ese problema.
  • Supervisión: Las herramientas gratuitas (Prometheus, Grafana, Uptime Kuma) se ejecutan en contenedores y no suponen ningún coste más allá del espacio que ocupan en la memoria RAM.
  • Tiempo de migración: pasar de un VPS a otro con contenedores es más rápido que con el alojamiento tradicional, pero hay que tener en cuenta el tiempo de propagación del DNS y la renovación del SSL.

Aquí es donde los costes suelen dispararse. La densidad de contenedores parece barata hasta que te quedas sin RAM a las 2 de la madrugada y necesitas ampliar la capacidad de inmediato.

Errores comunes al implementar Docker en un VPS

Patrones que causan problemas en la producción:

  • Ejecutar todo como root dentro del contenedor: los contenedores deben reducir los privilegios mediante la directiva USER en el Dockerfile
  • Almacenamiento de datos dentro del contenedor: utiliza volúmenes con nombre o montajes vinculados para que los datos se mantengan tras los reinicios del contenedor y las actualizaciones de la imagen
  • Sin límites de recursos: si no usas los parámetros –memory y –cpus (o sus equivalentes en Compose), un contenedor que se descontrole puede agotar todos los recursos del resto.
  • Ignorando el tamaño de la imagen: una imagen de Node de 2 GB tarda mucho en reconstruirse y consume mucho espacio en disco. Las compilaciones en varias etapas y las imágenes base reducidas permiten mantener esto bajo control.
  • Omitir la rotación de registros: el controlador de registros JSON predeterminado de Docker escribe archivos de tamaño ilimitado. Configura los parámetros «max-size» y «max-file» o envía los registros a otro lugar.
  • Cofres de seguridad en conflicto: Docker crea reglas de iptables que ufw y firewalld pueden anular. Elige un método y quédate con él.

La mayoría de estos problemas se pueden solucionar en cinco minutos, una vez que sabes dónde buscarlos.

Cuándo dar el salto más allá de un VPS

Un solo VPS en la nube puede gestionar una cantidad sorprendente de carga de trabajo de contenedores. Las señales que indican que necesitas ampliar la capacidad o la infraestructura:

  • La CPU se mantiene por encima del 75 % en varios contenedores
  • La memoria está al límite o casi al límite, sin margen para picos de uso
  • La espera de E/S de disco supera el 10 % en iostat
  • Bucles de reinicio de contenedores provocados por el agotamiento de recursos
  • Requisitos de cumplimiento que requieren hardware específico
  • Implementaciones multirregionales en las que la latencia hacia un único centro de datos es importante

Cuando llegas a esos límites, lo habitual es pasar primero a un VPS más potente, luego a un servidor dedicado con más núcleos y RAM, y finalmente a una configuración con varios servidores y un verdadero gestor de orquestación como Kubernetes o Docker Swarm. La mayoría de los equipos no necesitan un sistema de orquestación hasta que no están trabajando con varias máquinas físicas.

Comparte este artículo

Deja una respuesta

Tu dirección de correo electrónico no se publicará. Los campos obligatorios están marcados con *.