Instalar Docker en un VPS es uno de los primeros pasos que dan muchos administradores de sistemas y desarrolladores al montar un servidor nuevo. Docker permite ejecutar aplicaciones en contenedores aislados, lo que aporta coherencia, escalabilidad y una gestión sencilla. En esta guía completa aprenderás paso a paso cómo instalar Docker en un VPS, desde la preparación de tu servidor hasta la ejecución de tu primer contenedor.

¿Qué es Docker y por qué quieres instalar Docker en un VPS?

Docker es una plataforma de código abierto que permite empaquetar aplicaciones en contenedores. Un contenedor incluye todo lo que una aplicación necesita para ejecutarse: el código, el entorno de ejecución, las bibliotecas y las herramientas del sistema. Esto facilita mover aplicaciones entre distintos entornos sin problemas de compatibilidad. Al instalar Docker en un VPS, obtienes acceso a un potente ecosistema para gestionar aplicaciones web.

Ventajas de Docker en un VPS

  • Aislamiento: cada aplicación se ejecuta en su propio contenedor sin conflictos
  • Coherencia: el mismo contenedor se ejecuta de forma idéntica en los entornos de desarrollo, pruebas y producción
  • Uso eficiente de los recursos: los contenedores son más ligeros que las máquinas virtuales
  • Despliegue rápido: las aplicaciones nuevas están operativas en segundos
  • Escalabilidad sencilla: duplicar contenedores es fácil
  • Control de versiones: es fácil volver a versiones anteriores

Requisitos del sistema para instalar Docker en un VPS

Antes de instalar Docker en un VPS, tu servidor debe cumplir unos requisitos mínimos. Esto es lo que necesitas:

ComponenteMínimoRecomendadoNotas
RAM1 GB2+ GBMás RAM = más contenedores a la vez
CPU1 núcleo2+ núcleosSe requiere un procesador de 64 bits
Almacenamiento10 GB40+ GBSSD muy recomendable para el rendimiento
Sistema operativoUbuntu 22.04+Ubuntu 24.04 LTSTambién son compatibles Debian, CentOS y AlmaLinux
Kernel3.10+5.x+Los kernels modernos ofrecen mejor soporte para contenedores

¿Todavía no tienes un VPS? Consulta nuestra guía sobre cómo elegir un proveedor de VPS para seleccionar el servidor adecuado para tu entorno Docker.

Paso 1: preparar el VPS

El primer paso para instalar Docker en un VPS es preparar tu servidor. Inicia sesión por SSH y realiza las siguientes tareas preparatorias. Si aún no estás familiarizado con SSH, lee nuestra guía sobre conexiones al servidor.

Actualizar el sistema

Empieza siempre actualizando tu sistema a los últimos paquetes. En Ubuntu/Debian lo haces con apt update y apt upgrade. Así te aseguras de que se hayan aplicado todos los parches de seguridad y de tener las versiones más recientes de las dependencias.

Instalar los paquetes necesarios

Docker necesita algunos paquetes básicos para la instalación. Son paquetes que permiten usar repositorios por HTTPS: apt-transport-https, ca-certificates, curl y gnupg. Estos paquetes garantizan una descarga segura de Docker desde el repositorio oficial.

Eliminar versiones antiguas de Docker

Si en tu servidor hay una versión anterior de Docker, elimínala primero. Los paquetes antiguos pueden llamarse docker, docker.io o docker-engine. Eliminar estas versiones evita conflictos con la nueva instalación.

Paso 2: añadir el repositorio de Docker

Docker no se instala desde los repositorios estándar de Ubuntu/Debian, sino desde el repositorio oficial de Docker. Así te aseguras de obtener siempre la versión más reciente y estable.

Añadir la clave GPG

Descarga la clave GPG oficial de Docker y añádela a tu sistema. Esta clave verifica que los paquetes que descargas son auténticos y no han sido manipulados. Guarda la clave en /etc/apt/keyrings/ siguiendo la práctica recomendada más reciente.

Configurar el repositorio

Añade el repositorio de Docker a tu lista de fuentes. Usa la arquitectura de tu sistema (normalmente amd64 en servidores x86_64) y el nombre en clave de tu versión de Ubuntu/Debian. Después de añadir el repositorio, ejecuta de nuevo una actualización para que tu sistema encuentre los paquetes nuevos.

Paso 3: instalar Docker Engine

Ahora que has configurado el repositorio, puedes instalar el propio Docker Engine. El proceso de instalar Docker en un VPS incluye tres paquetes: docker-ce (el Docker Engine), docker-ce-cli (la interfaz de línea de comandos) y containerd.io (el entorno de ejecución de contenedores).

Verificar la instalación

Tras la instalación, comprueba que Docker funciona correctamente consultando la versión con docker --version y ejecutando un contenedor de prueba con docker run hello-world. Si ves el mensaje de hello-world, Docker se ha instalado correctamente en tu VPS.

Usar Docker sin sudo

Por defecto, Docker requiere permisos de root. Para poder ejecutar comandos de Docker sin sudo, añade tu usuario al grupo docker. Después tendrás que cerrar sesión y volver a iniciarla para que el cambio surta efecto. Ten en cuenta que esto da a tu usuario permisos de root efectivos a través de Docker, así que ten cuidado con ello en servidores de producción.

Paso 4: instalar Docker Compose

Docker Compose es una herramienta imprescindible que te permite definir y gestionar aplicaciones de varios contenedores con un único archivo de configuración. Al instalar Docker en un VPS, Docker Compose viene incluido de serie.

¿Qué es Docker Compose?

Con Docker Compose defines toda la pila de tu aplicación en un archivo docker-compose.yml. Este archivo describe qué contenedores necesitas, cómo están conectados entre sí y qué configuración usan. Después, con un solo comando, inicias todos los contenedores a la vez.

Instalar Docker Compose

La versión más reciente de Docker Compose (V2) se instala como plugin de Docker. En las instalaciones recientes de Docker, Compose V2 suele venir ya incluido. Compruébalo con docker compose version. Si falta, instala el paquete docker-compose-plugin mediante apt.

Paso 5: configurar Docker para producción

Tras instalar Docker en un VPS hacen falta pasos de configuración importantes para que Docker sea apto para producción. Los ajustes por defecto no siempre son óptimos para un entorno de producción.

Configurar los logs

Los contenedores de Docker generan logs que, por defecto, pueden crecer sin límite. Configura la rotación de logs en el archivo de configuración del demonio de Docker (/etc/docker/daemon.json) para evitar que se llene el disco. Establece un tamaño máximo de, por ejemplo, 10 MB por archivo de log y conserva un máximo de 3 archivos.

Elegir el controlador de almacenamiento

El controlador de almacenamiento por defecto (overlay2) es la mejor opción en la mayoría de las situaciones. Comprueba qué controlador está activo con docker info. En sistemas antiguos puede ocurrir que se use un controlador menos eficiente, lo que repercute en el rendimiento.

Configurar la red

Docker crea por defecto una red bridge. Para producción, a menudo conviene crear redes personalizadas que permitan a tus contenedores comunicarse de forma controlada. Las redes personalizadas también ofrecen resolución DNS automática entre contenedores, lo que simplifica la gestión.

Paso 6: ejecutar tu primer contenedor

Ahora que Docker está instalado y configurado, es el momento de ejecutar tu primer contenedor real. Como ejemplo, vamos a iniciar un servidor web Nginx.

Iniciar un contenedor Nginx

Con el comando docker run inicias un contenedor Nginx. Con la opción -d, el contenedor se ejecuta en segundo plano (modo detached). Con la opción -p enlazas el puerto 80 del contenedor con el puerto 80 de tu VPS, de modo que el servidor web sea accesible a través de la dirección IP de tu servidor. La opción --name da al contenedor un nombre reconocible para gestionarlo fácilmente.

Gestionar contenedores

Los comandos más importantes para gestionar tus contenedores de Docker son:

  • docker ps: muestra todos los contenedores en ejecución
  • docker ps -a: muestra todos los contenedores, incluidos los detenidos
  • docker stop [nombre]: detiene un contenedor
  • docker start [nombre]: inicia un contenedor detenido
  • docker restart [nombre]: reinicia un contenedor
  • docker logs [nombre]: consulta los logs de un contenedor
  • docker exec -it [nombre] bash: abre una terminal (shell) en un contenedor en ejecución

Ejemplos prácticos de Docker Compose

A continuación encontrarás configuraciones habituales de Docker Compose para páginas web y aplicaciones web.

WordPress con MySQL

Una de las aplicaciones más populares es ejecutar WordPress en Docker. Con Docker Compose defines un contenedor de WordPress y un contenedor de MySQL que trabajan juntos. El contenedor de WordPress se conecta automáticamente al contenedor de la base de datos a través de la red de Docker.

Aplicación Node.js

Para aplicaciones Node.js creas un Dockerfile que contenga tu aplicación y sus dependencias, y usas Docker Compose para orquestar la aplicación junto con las bases de datos y los servidores de caché que necesites.

Proxy inverso con Nginx

Al ejecutar varias aplicaciones web en Docker, un proxy inverso es imprescindible. Nginx Proxy Manager o Traefik son opciones populares que solicitan certificados SSL automáticamente a través de Let's Encrypt y dirigen el tráfico al contenedor correcto.

Seguridad de Docker en tu VPS

Tras instalar Docker en un VPS, la seguridad es un aspecto crucial. Los contenedores de Docker comparten el kernel con el sistema anfitrión, por lo que una vulnerabilidad en Docker puede comprometer potencialmente todo el sistema.

Buenas prácticas de seguridad

  • Nunca ejecutes contenedores como usuario root (usa USER en el Dockerfile)
  • Usa solo imágenes de Docker oficiales y de confianza
  • Analiza las imágenes con regularidad en busca de vulnerabilidades con herramientas como Trivy
  • Limita los recursos del contenedor con límites de memoria y CPU
  • Usa sistemas de archivos de solo lectura siempre que sea posible
  • Mantén el propio Docker siempre actualizado
  • Configura el firewall para abrir solo los puertos necesarios

Combina la seguridad de Docker con las medidas generales de seguridad del servidor de nuestra guía sobre cómo proteger una página web.

Problemas habituales al instalar Docker en un VPS

Al instalar Docker en un VPS puedes toparte con varios problemas. Estos son los más habituales y sus soluciones:

Permission denied

Esto ocurre cuando ejecutas comandos de Docker sin los permisos adecuados. Añade tu usuario al grupo docker o usa sudo. No olvides cerrar sesión y volver a iniciarla tras añadirte al grupo.

Conflictos de puertos

Si otro servicio ya está usando un puerto, Docker no puede utilizarlo. Comprueba qué puertos están en uso y elige otro puerto para tu contenedor, o detén el servicio que genera el conflicto.

Espacio de almacenamiento insuficiente

Las imágenes y los contenedores de Docker pueden ocupar mucho espacio. Usa docker system prune con regularidad para limpiar imágenes, contenedores y volúmenes sin usar. Supervisa activamente el uso del disco para evitar problemas.

Resumen y próximos pasos

Ya has instalado Docker en un VPS con éxito y has ejecutado tus primeros contenedores. Docker abre un mundo de posibilidades para gestionar aplicaciones web en tu VPS. Los siguientes pasos que puedes dar son configurar actualizaciones automáticas de contenedores, configurar la monitorización con herramientas como Portainer o ctop, implementar pipelines de CI/CD para despliegues automáticos y explorar la orquestación de contenedores con Docker Swarm. Con Docker en tu VPS estás listo para ejecutar aplicaciones web modernas de forma eficiente, escalable y manejable. Consulta también nuestra guía sobre hosting VPS en los Países Bajos para ver los mejores servidores donde ejecutar Docker.

Instalar Docker en un VPS: configuración de red y seguridad

Tras la instalación básica de Docker en tu VPS, una buena configuración de red es esencial. Docker crea por defecto una red bridge, pero en entornos de producción necesitas más control sobre cómo se comunican los contenedores entre sí y con el exterior.

Tipos de red de Docker explicados

Tipo de redUsoAislamientoRendimiento
Bridge (por defecto)Contenedores en el mismo hostBuenoBueno
HostSe necesita el máximo rendimientoNingunoMáximo
OverlayMulti-host (Docker Swarm)BuenoMedio
MacvlanContenedores como dispositivos físicosCompletoBueno
NoneNo se necesita redCompletoNo aplicable

Para producción, crea siempre una red bridge definida por el usuario (user-defined bridge network) en lugar de la red bridge por defecto. Esto ofrece resolución DNS automática entre contenedores (puedes usar los nombres de los contenedores como nombre de host) y mejor aislamiento. Usa el comando docker network create mi-red para crear una red nueva.

Docker Compose para producción en tu VPS

Docker Compose es imprescindible cuando ejecutas varios servicios en tu VPS. Con un único archivo YAML defines toda la pila de tu aplicación. Para instalar Docker en un VPS en producción, Docker Compose es el método recomendado.

Una pila típica de aplicación web en Docker Compose incluye:

  • Proxy inverso: Nginx o Traefik para la terminación SSL y el balanceo de carga
  • Aplicación: tu aplicación web en uno o varios contenedores
  • Base de datos: MySQL, PostgreSQL o MongoDB en un contenedor propio
  • Caché: Redis o Memcached para guardar sesiones y como caché
  • Monitorización: Prometheus y Grafana para la monitorización de servidores

Usa siempre números de versión específicos para tus imágenes en lugar de la etiqueta latest. Así evitas actualizaciones inesperadas que podrían romper tu aplicación. Guarda la configuración sensible en Docker secrets o en archivos de entorno que no estén en tu repositorio Git.

Seguridad de Docker en tu VPS: buenas prácticas

Por defecto, los contenedores de Docker no están completamente aislados del sistema anfitrión. Sin medidas adicionales, las vulnerabilidades de los contenedores pueden comprometer todo tu VPS. Sigue estas buenas prácticas para un entorno de Docker seguro:

  • No ejecutes contenedores como root: usa la directiva USER en tu Dockerfile para especificar un usuario sin privilegios de root.
  • Limita los recursos del contenedor: establece límites de CPU y memoria con --memory y --cpus para evitar la denegación de servicio.
  • Usa sistemas de archivos de solo lectura: monta el sistema de archivos del contenedor como solo lectura siempre que sea posible con la opción --read-only.
  • Analiza las imágenes en busca de vulnerabilidades: usa herramientas como Trivy o Docker Scout para detectar vulnerabilidades conocidas en tus imágenes.
  • Limita las capabilities: elimina las capabilities de Linux innecesarias con --cap-drop ALL y añade solo las necesarias.

No olvides proteger también el VPS subyacente. Sigue los pasos de nuestra lista de comprobación de seguridad para VPS y asegúrate de tener un firewall bien configurado. Usa claves SSH en lugar de contraseñas para acceder al servidor y mantén el sistema operativo actualizado con los últimos parches de seguridad.

Instalar Docker en un VPS: logs y resolución de problemas

Una buena gestión de logs es crucial cuando instalas Docker en un VPS y lo ejecutas en producción. Los contenedores de Docker generan logs esenciales para depurar problemas, supervisar el estado de las aplicaciones y detectar incidentes de seguridad.

Por defecto, Docker escribe los logs en archivos JSON en el host. En contenedores de larga duración, estos archivos de log pueden crecer enormemente y llenar tu espacio en disco. Configura la rotación de logs en la configuración del demonio de Docker estableciendo el tamaño máximo de archivo y el número de archivos que se conservan. Un tamaño máximo de 10 megabytes con tres archivos rotativos es una buena configuración inicial para la mayoría de las aplicaciones.

En entornos de producción con varios contenedores, una solución centralizada de registro de logs es imprescindible. El stack ELK (Elasticsearch, Logstash, Kibana) o la alternativa más ligera Loki con Grafana recopilan los logs de todos los contenedores en una ubicación central. Esto permite reconocer patrones entre varios servicios, algo crucial al depurar arquitecturas de microservicios.

Docker en un VPS: volúmenes y almacenamiento persistente

Los datos de los contenedores de Docker son efímeros por defecto: cuando se elimina un contenedor, desaparecen todos sus datos. En cargas de trabajo de producción en tu VPS, el almacenamiento persistente mediante volúmenes de Docker es esencial. Los volúmenes los gestiona Docker y existen con independencia de los contenedores. Sobreviven a la parada, al reinicio e incluso a la eliminación de contenedores. Usa volúmenes con nombre para bases de datos y otros servicios con estado. Haz copias de seguridad de tus volúmenes con regularidad, preferiblemente mediante un script automatizado que copie los datos a una ubicación de almacenamiento externa. Los bind mounts son una alternativa en la que montas directamente un directorio del sistema anfitrión en un contenedor. Es práctico para desarrollo y archivos de configuración, pero para los datos de producción se prefieren los volúmenes por su mejor aislamiento y su portabilidad entre distintos hosts.

Docker en tu VPS: actualizaciones automáticas y mantenimiento

Mantener un entorno Docker en tu VPS requiere atención tanto a Docker como a las imágenes que usas. Las imágenes desactualizadas suelen contener vulnerabilidades de seguridad conocidas que los atacantes explotan activamente. Una política de actualizaciones estructurada es esencial tras instalar Docker en tu VPS.

Automatiza la comprobación y la actualización de las imágenes de Docker con herramientas como Watchtower. Watchtower supervisa tus contenedores en ejecución y los actualiza automáticamente cuando hay una nueva versión de la imagen que usan. Configura Watchtower para que solo realice actualizaciones durante ventanas de mantenimiento, por ejemplo de noche, cuando el tráfico de tu página web es mínimo. Para entornos de producción, un enfoque más controlado es más seguro: usa un pipeline de CI/CD que pruebe primero las imágenes nuevas en un entorno de staging antes de desplegarlas en producción.

Limpia con regularidad los recursos de Docker que no uses. Las imágenes antiguas, los contenedores detenidos y los volúmenes sin usar ocupan espacio en disco que puede ir acumulándose poco a poco. El comando docker system prune elimina de una vez todos los recursos sin usar, pero úsalo con cuidado en producción. Programa una sesión de mantenimiento mensual para limpiar tu entorno Docker, actualizar las imágenes y revisar la configuración.

Docker en tu VPS: recursos y material de aprendizaje

Tras instalar Docker en tu VPS, seguir ampliando conocimientos es esencial para gestionar tu entorno de contenedores de forma profesional. La documentación oficial de Docker en docs.docker.com es el mejor punto de partida, con guías detalladas, tutoriales y material de referencia. Los foros de la comunidad de Docker y el canal de Docker en Stack Overflow ofrecen respuestas a los problemas concretos con los que te encuentres. Para profundizar en la seguridad de los contenedores y las buenas prácticas de producción, el CIS Docker Benchmark y la NIST Application Container Security Guide son fuentes valiosas que se actualizan con regularidad con las directrices más recientes. Invierte tiempo en aprender la orquestación de contenedores con Docker Compose y, con el tiempo, Kubernetes, a medida que tu infraestructura crezca.