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.
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do apt remove -y $pkg; doneInstalación de Docker en Ubuntu 24.04
Paso 1. Añadir la clave y la dirección del repositorio
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.listPaso 2. Instalar Docker Engine y Compose
apt update
apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-pluginAl 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.
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-pluginInstalació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.
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 dockerAl 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.
docker run --rm hello-world
docker compose versionSi 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.
usermod -aG docker usernameLevantar 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.
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 -dSi 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.
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.
{
"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.
