En este artículo, vamos a explorar cómo instalar ocker Swarm en servidores Ubuntu 22.04. Docker Swarm es una herramienta esencial para desarrolladores y administradores de sistemas que permite la creación y despliegue de un clúster de nodos Docker en varios servidores. Con Docker Swarm, puedes gestionar y orquestar contenedores de manera eficaz y sencilla.
Apertura de puertos para Docker Swarm
Primero, necesitas abrir algunos puertos que Docker Swarm utiliza en todos tus servidores. Esto se puede hacer utilizando el Firewall No Complicado (UFW). Para abrir los puertos necesarios, sigue estos pasos:
- Añade el perfil de aplicación OpenSSH y abre el puerto SSH predeterminado 22 ejecutando el siguiente comando:
sudo ufw allow OpenSSH
- Inicia y habilita UFW ejecutando el siguiente comando:
sudo ufw enable
- Permite los puertos 30000 a 35000 para los servicios ejecutando el siguiente comando:
sudo ufw allow 30000:35000/tcp
- Abre los puertos 2377, 7946 y 4789 para Docker Swarm ejecutando los siguientes comandos:
sudo ufw allow 2377/tcp sudo ufw allow 7946/tcp sudo ufw allow 7946/udp sudo ufw allow 4789/udp
- Finalmente, recarga UFW y verifica el estado ejecutando los siguientes comandos:
sudo ufw reload sudo ufw status
Añadiendo el repositorio Docker
A continuación, necesitas añadir el repositorio oficial de Docker a tus servidores. Esto te permitirá instalar Docker Engine utilizando los paquetes oficiales de Docker. Sigue estos pasos para añadir el repositorio Docker:
- Instala los paquetes necesarios ejecutando el siguiente comando:
sudo apt install apt-transport-https ca-certificates curl gnupg lsb-release -y
- Añade la clave GPG de Docker y el repositorio a tus sistemas con los siguientes comandos:
sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg sudo chmod a+r /etc/apt/keyrings/docker.gpg echo "deb [arch=\"$(dpkg --print-architecture)\" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo \"$VERSION_CODENAME\") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
- Actualiza y refresca tu repositorio Ubuntu ejecutando el siguiente comando:
sudo apt update
- Ahora deberías tener el repositorio Docker disponible en tus servidores.
Instalando Docker Engine
Con los sistemas preparados, es hora de instalar Docker Engine en tus servidores Ubuntu. Aquí te mostramos cómo hacerlo:
- Instala Docker Engine ejecutando el siguiente comando:
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
- Verifica que el servicio Docker está en ejecución ejecutando el siguiente comando:
sudo systemctl is-enabled docker
sudo systemctl status docker
- Deberías ver que el servicio Docker está habilitado y en ejecución en tus servidores.
- (Opcional): Si planeas ejecutar contenedores Docker utilizando un usuario no-root, necesitas añadir tu usuario al grupo docker. Esto permitirá al usuario ejecutar el comando Docker y ejecutar contenedores. Ejecuta el siguiente comando para añadir tu usuario al grupo docker:
sudo usermod -aG docker shapehost
- Inicia sesión como el usuario no-root y verifica tu configuración Docker ejecutando el siguiente comando:
su- shapehost docker run hello-world
- Si la configuración es exitosa, deberías ver la salida del contenedor “hello-world”.
Inicializando Docker Swarm
Ahora que Docker Engine está instalado en tus servidores, es hora de inicializar Docker Swarm y configurar el Gestor de Swarm y los Nodos de Trabajo. Comencemos:
- Para inicializar Docker Swarm, ejecuta el siguiente comando en el servidor Maestro/Gestor de Swarm:
docker swarm init --advertise-addr <server-ip> --default-addr-pool <ip-range>
Reemplaza <server-ip>
por la dirección IP del servidor Maestro/Gestor de Swarm, y <ip-range>
por el rango de direcciones IP para los contenedores.
- Si el proceso de inicialización es exitoso, verás el token generado para añadir Nodos a Docker Swarm.
- Para comprobar el estado del modo Swarm, ejecuta el siguiente comando:
docker info
Si el modo Swarm está habilitado, deberías ver los detalles del NodeID, Manager y Node.
- Para verificar la lista de Nodos en Docker Swarm, ejecuta el siguiente comando:
docker node ls
En este punto, deberías ver sólo el Nodo Maestro/Gestor de Swarm.
Añadiendo nodos de trabajo a Docker Swarm
Con Docker Swarm inicializado, es hora de añadir Nodos de Trabajo a Swarm. Sigue estos pasos:
- Ejecuta el siguiente comando en el servidor Maestro/Gestor de Swarm para mostrar el token generado para añadir Nodos de Trabajo:
docker swarm join-token worker
Toma nota del token mostrado.
- Ve al servidor Nodo de Trabajo y ejecuta el siguiente comando para unirte a Docker Swarm como Nodo de Trabajo:
docker swarm join --token<token><master-ip>:2377
Reemplaza <token>
por el token que obtuviste en el paso anterior, y <master-ip>
por la dirección IP del servidor Maestro/Gestor de Swarm.
- Si el proceso es exitoso, verás la salida “Este nodo se unió a un swarm como trabajador”.
- Regresa al servidor Maestro/Gestor de Swarm y ejecuta el siguiente comando para verificar la lista de Nodos disponibles en Docker Swarm:
docker node ls
Ahora deberías ver el Nodo Maestro/Gestor de Swarm y el nuevo Nodo de Trabajo añadido.
Ejecutando servicios en Docker Swarm
Ahora que tu Docker Swarm está funcionando con los nodos necesarios, es hora de desplegar y ejecutar servicios en Swarm. En este ejemplo, desplegaremos un servicio HTTP simple utilizando la imagen Nginx. Sigue estos pasos:
- Crea un nuevo servicio en Docker Swarm ejecutando el siguiente comando en el servidor Maestro/Gestor de Swarm:
docker service create --replicas 1 --name test-nginx -p 30001:80 nginx:alpine
Este comando crea un nuevo servicio llamado “test-nginx” con 1 réplica, expone el puerto 30001 y utiliza la imagen nginx:alpine.
- Comprueba los detalles del servicio “test-nginx” ejecutando el siguiente comando:
docker service inspect test-nginx
Verás información detallada sobre el servicio.
- Verifica la lista de servicios Docker en Swarm ejecutando el siguiente comando:
docker service ls
Si es exitoso, deberías ver el servicio “test-nginx” en ejecución en el Nodo Maestro/Gestor de Swarm.
- Accede al servicio “test-nginx” utilizando la dirección IP del host y el puerto 30001 con el siguiente comando:
curl<host-ip>:30001
Reemplaza <host-ip>
por la dirección IP del Nodo Maestro/Gestor de Swarm.
- Deberías ver el código fuente de index.html y los detalles de los encabezados HTTP.
Escalando servicios en Docker Swarm
Uno de los beneficios clave de Docker Swarm es la capacidad de escalar servicios sin esfuerzo. Aprendamos cómo escalar el servicio “test-nginx” en tu Docker Swarm:
- Escala el servicio “test-nginx” a 3 réplicas ejecutando el siguiente comando en el servidor Maestro/Gestor de Swarm:
docker service scale test-nginx=3
- Verifica el servicio “test-nginx” ejecutando el siguiente comando:
docker service ps test-nginx
Deberías ver que el servicio se está ejecutando en todos los Nodos de Trabajo disponibles.
- Ve a uno de los terminales de Nodo de Trabajo y ejecuta el siguiente comando para asegurarte de que el servicio “test-nginx” está en ejecución:
curl<worker-ip>:30001
Reemplaza <worker-ip>
por la dirección IP del Nodo de Trabajo.
- Si todo está configurado correctamente, deberías ver el contenedor ejecutando el servicio “test-nginx”.
Eliminando servicios en Docker Swarm
Para limpiar tu entorno y eliminar los servicios de tu Docker Swarm, sigue estos pasos:
- Elimina el servicio “test-nginx” ejecutando el siguiente comando en el servidor Maestro/Gestor de Swarm:
docker service rm test-nginx
- Verifica la lista de servicios disponibles en Docker Swarm ejecutando el siguiente comando:
docker service ls
El servicio “test-nginx” ya no debería aparecer en la lista.
- Finalmente, elimina la imagen nginx:alpine y comprueba la lista de imágenes descargadas en cada servidor ejecutando los siguientes comandos:
docker rmi nginx:alpine
docker images
Si estás buscando soluciones de alojamiento en la nube fiables y escalables, considera los servicios Cloud VPS de Shape.host. Shape.host ofrece servicios de alojamiento en la nube líderes en la industria con un rendimiento y seguridad de primera calidad. Lleva tu negocio al siguiente nivel con las soluciones de alojamiento de alto rendimiento de Shape.host.