Docker Swarm · 6 min read · Nov 10, 2025
Cómo instalar y configurar un clúster de Docker Swarm en CentOS 8

Docker es una herramienta de código abierto que se puede utilizar para crear, implementar y ejecutar aplicaciones utilizando un contenedor. El contenedor permite empaquetar una aplicación con todas las dependencias necesarias y enviarla como un solo paquete.
Docker Swarm es una herramienta de agrupamiento utilizada para gestionar el host de Docker. Permite agrupar varios hosts de Docker en un solo servidor virtual lógico. De esta manera, puedes escalar tu aplicación horizontalmente y aumentar el número de instancias de contenedor. Docker Swarm ofrece características muy útiles, incluyendo la auto-reparación de contenedores, balanceo de carga, escalado de contenedores hacia arriba y hacia abajo, descubrimiento de servicios y actualizaciones continuas.
En esta publicación, te mostraremos cómo configurar un clúster de Docker Swarm en CentOS 8.
Requisitos previos
- Dos servidores ejecutando CentOS 8.
- Una contraseña de root configurada en cada servidor.
Instalar Docker en ambos nodos
Primero, necesitarás instalar Docker en ambos nodos. Por defecto, la última versión de Docker no está incluida en el repositorio predeterminado de CentOS 8. Así que necesitarás agregar un repositorio de Docker en tu sistema.
Puedes agregarlo con el siguiente comando:
dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repoUna vez que se crea el repositorio de Docker, instala Docker con el siguiente comando:
dnf install docker-ce --nobestDespués de instalar Docker, inicia el servicio de Docker y habilítalo para que se inicie al reiniciar el sistema con el siguiente comando:
systemctl start docker
systemctl enable dockerTambién puedes verificar el estado de Docker con el siguiente comando:
systemctl status dockerDeberías obtener la siguiente salida:
? docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
Active: active (running) since Fri 2021-03-12 03:55:24 EST; 6s ago
Docs: https://docs.docker.com
Main PID: 2173 (dockerd)
Tasks: 8
Memory: 44.7M
CGroup: /system.slice/docker.service
??2173 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
Mar 12 03:55:23 workernode dockerd[2173]: time="2021-03-12T03:55:23.570387991-05:00" level=error msg="Failed to built-in GetDriver graph btrfs>
Mar 12 03:55:23 workernode dockerd[2173]: time="2021-03-12T03:55:23.617049696-05:00" level=warning msg="Your kernel does not support cgroup bl>
Mar 12 03:55:23 workernode dockerd[2173]: time="2021-03-12T03:55:23.617096273-05:00" level=warning msg="Your kernel does not support cgroup bl>
Mar 12 03:55:23 workernode dockerd[2173]: time="2021-03-12T03:55:23.617278059-05:00" level=info msg="Loading containers: start."
Mar 12 03:55:23 workernode dockerd[2173]: time="2021-03-12T03:55:23.884953789-05:00" level=info msg="Default bridge (docker0) is assigned with>
Mar 12 03:55:24 workernode dockerd[2173]: time="2021-03-12T03:55:24.039811428-05:00" level=info msg="Loading containers: done."
Mar 12 03:55:24 workernode dockerd[2173]: time="2021-03-12T03:55:24.066358016-05:00" level=info msg="Docker daemon" commit=363e9a8 graphdriver>
Mar 12 03:55:24 workernode dockerd[2173]: time="2021-03-12T03:55:24.066498611-05:00" level=info msg="Daemon has completed initialization"
Mar 12 03:55:24 workernode systemd[1]: Started Docker Application Container Engine.
Mar 12 03:55:24 workernode dockerd[2173]: time="2021-03-12T03:55:24.119523516-05:00" level=info msg="API listen on /var/run/docker.sock"
Ahora, verifica la versión instalada de Docker usando el siguiente comando:
docker --versionDeberías ver la siguiente salida:
Docker version 20.10.5, build 55c4c88
Configurar el Firewall
A continuación, necesitarás permitir los puertos 2376, 2377, 7946 y 80 a través del firewall en ambos nodos. Puedes permitirlos con el siguiente comando:
firewall-cmd --permanent --add-port=2376/tcp
firewall-cmd --permanent --add-port=2377/tcp
firewall-cmd --permanent --add-port=7946/tcp
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=7946/udp
firewall-cmd --permanent --add-port=4789/udpA continuación, recarga el firewalld para aplicar los cambios:
firewall-cmd --reloadInicializar el clúster de Docker Swarm
A continuación, necesitarás inicializar el clúster de Docker Swarm en el nodo administrador. Puedes hacerlo con el siguiente comando:
docker swarm init --advertise-addr 45.58.32.185Deberías obtener la siguiente salida:
Swarm initialized: current node (cq8xpscsls2ctqhdha8lhdrph) is now a manager.
To add a worker to this swarm, run the following command:
docker swarm join --token SWMTKN-1-24ciicg1knfh8htmvymnfw1igx64tcq6ah91n6amk18m2ek9qo-8sf9oysu08t5mf4ggd4ut7o3e 45.58.32.185:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
Puedes usar el comando mostrado en la salida anterior en el nodo trabajador de Docker para unir el nodo al clúster.
Puedes verificar la información del clúster de Docker Swarm con el siguiente comando:
docker infoDeberías obtener la siguiente salida:
Client:
Context: default
Debug Mode: false
Plugins:
app: Docker App (Docker Inc., v0.9.1-beta3)
buildx: Build with BuildKit (Docker Inc., v0.5.1-docker)
Server:
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 0
Server Version: 20.10.5
Storage Driver: overlay2
Backing Filesystem: xfs
Supports d_type: true
Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Cgroup Version: 1
Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
Swarm: active
NodeID: cq8xpscsls2ctqhdha8lhdrph
Is Manager: true
ClusterID: m7jrgvuw1k7pvfd1qyc3mffpl
Managers: 1
Nodes: 1
Default Address Pool: 10.0.0.0/8
SubnetSize: 24
Data Path Port: 4789
Orchestration:
Task History Retention Limit: 5
Raft:
Snapshot Interval: 10000
Number of Old Snapshots to Retain: 0
Heartbeat Tick: 1
Election Tick: 10
Dispatcher:
Heartbeat Period: 5 seconds
CA Configuration:
Expiry Duration: 3 months
Force Rotate: 0
Autolock Managers: false
Root Rotation In Progress: false
Node Address: 45.58.32.185
Manager Addresses:
45.58.32.185:2377
Ahora puedes verificar el nodo de Docker Swarm con el siguiente comando:
docker node lsDeberías obtener la siguiente salida:
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
cq8xpscsls2ctqhdha8lhdrph * masternode Ready Active Leader 20.10.5
Agregar nodo trabajador al clúster de Docker Swarm
A continuación, necesitarás agregar el nodo trabajador al nodo administrador de Docker Swarm. Puedes hacerlo con el siguiente comando en el nodo trabajador:
docker swarm join --token SWMTKN-1-24ciicg1knfh8htmvymnfw1igx64tcq6ah91n6amk18m2ek9qo-8sf9oysu08t5mf4ggd4ut7o3e 45.58.32.185:2377Deberías obtener la siguiente salida:
This node joined a swarm as a worker.
En el nodo administrador de Docker, verifica el nodo trabajador con el siguiente comando:
docker node lsDeberías ver que el nodo trabajador se ha agregado al Docker Swarm:
cq8xpscsls2ctqhdha8lhdrph * masternode Ready Active Leader 20.10.5
bipfv8sfm94a9po0uame5rd1n workernode Ready Active 20.10.5
Lanzar un servicio en Docker Swarm
Aquí, crearemos un nuevo servicio web Nginx y lo escalaremos con dos contenedores. Puedes crearlo ejecutando el siguiente comando en el nodo administrador:
docker service create -p 80:80 --name webservice --replicas 2 nginxDeberías obtener la siguiente salida:
agyxlaswxakrbboakkyydsh0k
overall progress: 2 out of 2 tasks
1/2: running [==================================================>]
2/2: running [==================================================>]
verify: Service converged
Ahora puedes verificar el servicio web con el siguiente comando:
docker service lsDeberías ver la siguiente salida:
ID NAME MODE REPLICAS IMAGE PORTS
agyxlaswxakr webservice replicated 2/2 nginx:latest *:80->80/tcp
También puedes verificar el contenedor en ejecución con el siguiente comando:
docker psDeberías ver la siguiente salida:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c887cad1df2e nginx:latest "/docker-entrypoint.…" 32 seconds ago Up 30 seconds 80/tcp webservice.2.jelyj9gmeb7ikl2scg7mz8yg8
Para obtener la información detallada del servicio web, ejecuta el siguiente comando:
docker service ps webserviceDeberías ver la siguiente salida:
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
eye9zukwwrkq webservice.1 nginx:latest workernode Running Running 3 minutes ago
jelyj9gmeb7i webservice.2 nginx:latest masternode Running Running 3 minutes ago
Verificar Docker Swarm
En este punto, hemos desplegado un contenedor Nginx en los nodos del clúster, incluido el nodo de gestión. Ahora puedes acceder a tu servidor web Nginx utilizando cualquiera de las direcciones IP del nodo trabajador o del nodo administrador:

Conclusión
En la guía anterior, aprendiste cómo configurar el clúster de Docker Swarm en CentOS 8. Ahora puedes agregar cualquier número de nodos trabajadores al clúster de Docker Swarm y escalar tu aplicación.
Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.