HELPER VPS

Instalación de Docker en un VPS: Ubuntu, Debian, AlmaLinux y Compose

Si instalas desde el repositorio oficial de Docker, obtienes el último Docker Engine y el plugin Compose, y las actualizaciones posteriores se hacen con una sola actualización del sistema. Resumimos en orden los comandos de cada sistema operativo y los ajustes imprescindibles tras la instalación.

El método más rápido: crear el servidor con la imagen Docker

Si vas a crear un servidor nuevo, lo más rápido es elegir Docker en la lista de imágenes. Empieza con Docker Engine y Docker Compose ya instalados sobre Ubuntu 24.04 LTS, así que ejecutas docker compose up en cuanto entras. La presentación de la app y los tamaños recomendados están en la página VPS Docker.

Si quieres añadir Docker a un servidor que ya usas o usar otro sistema como Debian o AlmaLinux, instálalo tú siguiendo el orden de abajo. Todos los comandos parten de una conexión como root. Si entraste como usuario normal, añade sudo delante de los comandos.

Qué comprobar antes de instalar

Docker funciona en servidores de cualquier tamaño. Para proyectos personales que ejecutan unos pocos contenedores, el plan general más pequeño de 12GB es suficiente; para ejecutar una base de datos, servidor web y caché juntos, 24GB o más te da espacio. Si descargas y compilas imágenes con frecuencia, un VPS NVMe con un disco rápido marca una diferencia notable.

Si hay paquetes antiguos de Docker del repositorio del sistema operativo, bórralos primero para que no se mezclen con los oficiales. Los paquetes no instalados se omiten, así que puedes ejecutarlo tal cual.

Ubuntu, Debian
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do apt remove -y $pkg; done

Instalación de Docker en Ubuntu 24.04

Paso 1. Añadir la clave y la dirección del repositorio

Ubuntu 24.04
apt update
apt install -y ca-certificates curl
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" > /etc/apt/sources.list.d/docker.list

Paso 2. Instalar Docker Engine y Compose

Ubuntu 24.04
apt update
apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Al terminar la instalación, el servicio Docker se activa automáticamente y también arranca al reiniciar el servidor. Los mismos comandos funcionan tal cual en Ubuntu 22.04 y 26.04. El nombre de versión de la dirección del repositorio se lee automáticamente de /etc/os-release.

Instalación de Docker en Debian 13

En Debian el orden es el mismo que en Ubuntu y solo cambia la dirección del repositorio a linux/debian. En Debian 12 se usan los mismos comandos.

Debian 13
apt update
apt install -y ca-certificates curl
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian $(. /etc/os-release && echo "$VERSION_CODENAME") stable" > /etc/apt/sources.list.d/docker.list
apt update
apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Instalación de Docker en AlmaLinux 10

AlmaLinux y Rocky Linux usan el repositorio RHEL de Docker. Primero se limpia Podman, incluido de serie, para que no se solape, y después se instala. Los comandos son los mismos en AlmaLinux 9 y Rocky Linux 9 y 10.

AlmaLinux 10
dnf remove -y podman buildah runc
dnf -y install dnf-plugins-core
dnf config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo
dnf -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
systemctl enable --now docker

Al instalar por primera vez, si pregunta si aceptas la clave de firma del repositorio, pulsa y. En la familia RHEL el servicio no se activa solo tras la instalación, así que con la última línea, systemctl enable --now docker, lo activas ahora y también al arrancar.

Comprobar la instalación y el primer contenedor

Lanza una vez un contenedor de prueba con el comando de abajo. Si aparece un mensaje que empieza por Hello from Docker, el motor, la descarga de imágenes y la ejecución de contenedores funcionan bien. Con --rm, el contenedor se elimina en cuanto termina.

Terminal
docker run --rm hello-world
docker compose version

Si quieres usar Docker también como usuario normal, añádelo al grupo docker y vuelve a entrar. El grupo docker tiene los mismos permisos que root, así que añade solo usuarios de confianza.

Terminal
usermod -aG docker username

Levantar servicios con Docker Compose

Compose consiste en escribir la configuración de los contenedores en un solo archivo YAML y levantarlos con una línea. Aunque muevas o crees de nuevo el servidor, con el mismo archivo vuelves a tener el mismo entorno. Por ejemplo, un archivo que levanta un servidor web Nginx tiene este aspecto.

Terminal
mkdir -p /opt/web && cd /opt/web
cat > compose.yaml <<'EOF'
services:
  web:
    image: nginx:stable
    ports:
      - "80:80"
    volumes:
      - ./html:/usr/share/nginx/html:ro
    restart: unless-stopped
EOF
docker compose up -d

Si abres http://YOUR_SERVER_IP en el navegador, aparece la pantalla de Nginx. Si pones un index.html en la carpeta html, se muestra ese archivo. Con estos cuatro comandos tienes de sobra para el día a día.

  • docker compose ps: muestra los contenedores en marcha y sus puertos.
  • docker compose logs -f: sigue los logs en tiempo real. Sal con Ctrl+C.
  • docker compose pull && docker compose up -d: descarga imágenes nuevas y pasa los contenedores a la nueva versión.
  • docker compose down: detiene y elimina los contenedores. Los datos guardados en volúmenes se mantienen.

Si escribes restart: unless-stopped, los contenedores vuelven a arrancar solos al reiniciar el servidor. Solo quedan detenidos los que detuviste tú.

Firewall y publicación de puertos

Docker abre directamente en las reglas del firewall (iptables) los puertos publicados con ports:. Por eso, un puerto escrito en ports: es accesible desde fuera aunque no lo hayas permitido en ufw. Las bases de datos o paneles de administración que no deben verse desde fuera, átalos solo a 127.0.0.1 como abajo y solo serán accesibles desde dentro del servidor.

compose.yaml
    ports:
      - "127.0.0.1:5432:5432"

Lo limpio es publicar solo los puertos 80 y 443 para servicios web y que el resto se llamen entre sí por el nombre del servicio dentro de la misma red de Compose. Para el firewall básico de todo el servidor, sigue la guía básica del firewall y deja abiertos solo SSH, HTTP y HTTPS.

Gestión de logs y disco

Si no defines nada, los logs de los contenedores se acumulan sin parar. Si indicas el driver de logs local en /etc/docker/daemon.json como abajo, los logs se comprimen y solo se guarda un tamaño fijo. Tras guardar, ejecuta systemctl restart docker y se aplicará a los contenedores que crees a partir de ese momento.

/etc/docker/daemon.json
{
  "log-driver": "local"
}

Las imágenes sin usar y los contenedores detenidos también ocupan disco. Mira el uso con docker system df y limpia las imágenes que no usas ahora con docker image prune -a. Si crecen los datos, también puedes conectar un disco de bloque NVMe al servidor y usarlo como carpeta de datos de Docker.

Proteger tus datos y siguientes pasos

Los contenedores se pueden borrar y recrear cuando quieras, pero los datos de los volúmenes no se pueden recrear. Para las bases de datos, guarda volcados con regularidad, y protege el servidor entero también con copias automáticas o snapshots. Cómo hacerlo está en la guía de copias de seguridad y snapshots.

El archivo Compose para publicar WordPress con Docker está en la guía de instalación de WordPress. Si quieres desplegar varias apps desde una pantalla con certificados HTTPS automáticos, crea un servidor con la imagen de Coolify o Dokploy. Los tamaños ideales para usar solo contenedores están en VPS para contenedores.

Guías relacionadas

Configuraciones que conviene hacer a continuación de esta guía.

Ver todas las guías