Cómo comenzar con Docker en un VPS
Escrito por el equipo de ApexVPS • Última actualización: julio de 2026 • 8 min de lectura
Ejecutar Docker en un VPS es la forma más rápida de pasar de un sistema Ubuntu vacío a una aplicación web, base de datos o servicio autoalojado en minutos. En lugar de lidiar con paquetes del sistema y dependencias conflictivas, descarga una imagen preconstruida e inicia un contenedor. Esta guía para principiantes le explica cómo instalar Docker y Docker Compose en Ubuntu o Debian, los conceptos básicos que necesita, cómo lanzar su primer contenedor, cómo persistir datos con volúmenes y algunos fundamentos de seguridad para que no tenga problemas.
¿Por qué ejecutar Docker en un VPS?
Un servidor virtual privado te da acceso root completo y recursos dedicados, justo lo que los contenedores necesitan. Con Docker instalado, puedes ejecutar muchos servicios aislados uno al lado del otro sin que se estorben. Cada contenedor incluye sus propias librerías, así que una aplicación Node, una base de datos Postgres y un proxy inverso pueden coexistir limpiamente en una sola máquina. Si tu objetivo es alojar aplicaciones en un VPS — piensa en una nube personal, una wiki o un servidor multimedia — Docker mantiene cada servicio ordenado y reproducible.
Los contenedores también son portables. El mismo archivo Compose que funciona en tu portátil funciona en el servidor, eliminando el clásico problema de «funciona en mi máquina». Reconstruir un servicio tras un error tarda segundos, no una tarde reinstalando paquetes.
Conceptos básicos en lenguaje sencillo
Antes de tocar la línea de comandos, conviene conocer cuatro bloques fundamentales:
- Imagen — una plantilla de solo lectura que contiene una aplicación y todo lo que necesita para ejecutarse. Descargas imágenes de un registro como Docker Hub. Piénsalo como una instantánea o una clase.
- Contenedor — una instancia en ejecución de una imagen. Puedes iniciar, detener y eliminar contenedores libremente. Muchos contenedores pueden ejecutarse desde la misma imagen, como objetos creados a partir de una clase.
- Volumen — almacenamiento persistente que vive fuera de la capa grabable de un contenedor. Los volúmenes son cómo mantienes seguras las bases de datos y los archivos subidos cuando se reemplaza un contenedor.
- Red — una red virtual que permite que los contenedores se comuniquen entre sí por nombre. Docker crea una automáticamente para cada proyecto Compose, de modo que tu aplicación pueda alcanzar su base de datos en un hostname amigable.
Paso 1: instala Docker en Ubuntu o Debian
La forma más sencilla y oficialmente soportada de instalar Docker Engine es el script de conveniencia. Conéctate a tu servidor por SSH y ejecuta:
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
Esto instala Docker Engine junto con el plugin de Compose. Cuando termine, confirma las versiones:
docker --version
docker compose version
Por defecto Docker requiere sudo. Para ejecutarlo como tu usuario normal, añádate al grupo docker y luego cierra sesión y vuelve a entrar para que el cambio surta efecto:
sudo usermod -aG docker $USER
Docker también arranca al iniciar el sistema en la mayoría de los casos. Si alguna vez necesitas activarlo manualmente:
sudo systemctl enable --now docker
¿Prefieres el método del repositorio de paquetes o quieres todos los detalles para tu distribución exacta? La documentación oficial de instalación de Docker cubre todas las opciones. El script de conveniencia anterior es ideal para un VPS nuevo.
Paso 2: ejecuta tu primer contenedor
Prueba la instalación con la imagen clásica hello-world:
docker run hello-world
Docker descarga la imagen, la ejecuta una vez e imprime un mensaje de confirmación. Ahora ejecutemos algo que puedas ver realmente. Este comando inicia un servidor web Nginx en segundo plano y mapea el puerto 8080 del host al puerto 80 del contenedor:
docker run -d -p 8080:80 --name web nginx
Abre http://your-server-ip:8080 en un navegador y deberías ver la página de bienvenida de Nginx. Algunas banderas que vale la pena conocer:
-dejecuta el contenedor en modo detached, en segundo plano.-p 8080:80publica un puerto comohost:container.--name webda al contenedor un nombre memorable.
Comprueba qué está ejecutándose, luego detén y elimina el contenedor cuando termines:
docker ps
docker stop web
docker rm web
Un puñado de comandos cubren la mayor parte del trabajo diario. docker images lista las imágenes que has descargado, docker logs web muestra la salida de un contenedor para solucionar problemas, y docker exec -it web bash abre una shell dentro de un contenedor en ejecución para que puedas explorar. Aprender estos cinco o seis comandos es suficiente para gestionar un pequeño servidor con confianza, y puedes buscar el resto cuando los necesites.
Paso 3: usa Docker Compose para aplicaciones de múltiples contenedores
Escribir comandos largos docker run se vuelve tedioso rápido. Docker Compose te permite describir todo tu stack en un solo archivo y levantarlo con un comando. Crea un archivo llamado compose.yaml:
services:
web:
image: nginx:latest
ports:
- "8080:80"
volumes:
- web-data:/usr/share/nginx/html
restart: unless-stopped
volumes:
web-data:
Desde el mismo directorio, inicia todo en segundo plano:
docker compose up -d
Compose crea la red, el volumen con nombre y el contenedor por ti. Complementos útiles:
docker compose ps
docker compose logs -f
docker compose down
La política restart: unless-stopped significa que el servicio vuelve a arrancar automáticamente tras un reinicio o un fallo, algo práctico para un servidor que no vigilas las 24 horas.
Paso 4: Persiste datos con volúmenes
Esta es la parte donde los principiantes suelen fallar. Cualquier dato escrito dentro del sistema de archivos de un contenedor desaparece cuando ese contenedor se elimina o recrea. Para conservar datos, colócalos en un volumen. Hay dos enfoques comunes:
- Volúmenes con nombre — gestionados por Docker, ideales para bases de datos. El ejemplo de Compose anterior usa uno llamado
web-data. - Bind mounts — asignan una carpeta del host directamente al contenedor, por ejemplo
./config:/etc/app. Ideal para archivos de configuración que quieras editar a mano.
Inspecciona y gestiona volúmenes desde la línea de comandos:
docker volume ls
docker volume inspect web-data
Mientras tus rutas importantes apunten a un volumen, puedes eliminar y reconstruir contenedores sin perder un solo byte. Incluye el directorio de volúmenes en las copias de seguridad del servidor.
Paso 5: Actualiza imágenes y contenedores
Las imágenes de contenedores reciben actualizaciones de seguridad y funciones como cualquier software. Actualizar un stack de Compose es una rutina de dos pasos: descarga las imágenes más recientes y luego recrea los contenedores.
docker compose pull
docker compose up -d
Como tus datos viven en volúmenes, recrear es seguro. Con el tiempo, las imágenes no utilizadas se acumulan y ocupan espacio. Límpialas de vez en cuando:
docker image prune
Fija versiones específicas con etiquetas (por ejemplo postgres:16 en lugar de latest) cuando quieras actualizaciones predecibles y repetibles, no sorpresas.
Seguridad básica de Docker para principiantes
Los contenedores son prácticos, pero no son una barrera de seguridad mágica. Unos pocos hábitos te mantienen a salvo de problemas:
- Solo ejecuta imágenes de confianza. Prefiere imágenes oficiales o de editores reconocidos. No ejecutes una imagen aleatoria como root solo porque un tutorial te lo dijo: una imagen no confiable ejecuta código en tu servidor.
- Quita root dentro de los contenedores. Muchas imágenes oficiales admiten un usuario no root, o puedes configurar uno con la instrucción
USERen un Dockerfile. Ejecutar como usuario limitado reduce el impacto si una aplicación se ve comprometida. - Solo publica los puertos necesarios. Cada flag
-pabre una puerta a Internet. Mantén las bases de datos en la red interna de Docker y expón solo tu front end web. - Mantén el host actualizado. La seguridad de Docker comienza con un servidor seguro. Ejecuta
sudo apt update && sudo apt upgraderegularmente y refuerza el acceso SSH.
Antes de exponer algo públicamente, revisa nuestra lista de verificación complementaria sobre cómo asegurar tu VPS en los primeros 10 minutos — incluye claves SSH, firewall y actualizaciones automáticas que complementan perfectamente un host Docker.
Elegir un VPS preparado para Docker
Docker funciona en hardware modesto, pero los recursos dedicados marcan una diferencia real cuando apilas varios contenedores. El alojamiento compartido y sobresuscrito significa que un vecino ruidoso puede limitar tu base de datos en el peor momento. ApexVPS te ofrece vCPU realmente dedicadas, almacenamiento NVMe SSD y acceso root completo, para que tus contenedores obtengan el rendimiento por el que pagaste. Todos los planes admiten Ubuntu, Debian y otras distribuciones populares, y puedes añadir tu clave SSH al registrarte.
El pago se realiza únicamente en criptomonedas a través de OxaPay, aceptando Bitcoin, Ethereum, USDT y más de 30 criptomonedas: sin tarjeta de crédito, sin cuenta bancaria y sin KYC. Solo necesitas proporcionar un correo electrónico para recibir los datos de acceso, y eso es todo. Compara las especificaciones y regiones en la página de precios de ApexVPS para encontrar un plan adecuado para tu carga de trabajo de contenedores.
Preguntas frecuentes
¿Necesito mucha RAM para ejecutar Docker en un VPS?
No. Docker en sí es ligero y añade poca sobrecarga. Uno o dos contenedores funcionan cómodamente con 2 GB de RAM, mientras que 4 GB o más dan margen para bases de datos y varios servicios a la vez.
¿Es docker-compose o docker compose?
En una instalación moderna, Compose se incluye como plugin, por lo que el comando es docker compose con un espacio. El binario independiente más antiguo docker-compose sigue funcionando pero se está eliminando gradualmente: usa la versión plugin en una instalación nueva.
¿Dónde se almacenan mis datos cuando se elimina un contenedor?
Todo lo escrito dentro del contenedor se pierde al eliminarlo. Guarda los datos importantes en un volumen con nombre o un bind mount para que sobrevivan a la recreación del contenedor. Así es como las bases de datos y las subidas se mantienen seguras.
¿Puedo pagar un VPS preparado para Docker con criptomonedas?
Sí. El pago en ApexVPS es solo con criptomonedas a través de OxaPay y acepta Bitcoin, Ethereum, USDT y más de 30 monedas. El registro solo requiere un correo electrónico, sin tarjeta de crédito y sin verificación de identidad.