# Primeros pasos con el modo Swarm


Este tutorial te presenta las características del modo Swarm de Docker Engine. Quizás quieras familiarizarte con los [conceptos clave](/engine/key-concepts/) antes de comenzar.

El tutorial te guiará a través de:

* Inicializar un clúster de motores de Docker (Docker Engines) en modo Swarm
* Añadir nodos al swarm
* Implementar servicios de aplicaciones en el swarm
* Administrar el swarm una vez que tengas todo funcionando

Este tutorial utiliza comandos de la CLI de Docker Engine ingresados en la línea de comandos de una ventana de terminal.

Si eres completamente nuevo en Docker, consulta [Acerca de Docker Engine](/../swarm/).

## Preparación

Para ejecutar este tutorial, necesitas:

* [Tres hosts Linux que puedan comunicarse a través de una red, con Docker instalado](#tres-máquinas-host-en-red)
* [La dirección IP de la máquina administradora (manager)](#la-dirección-ip-de-la-máquina-administradora)
* [Puertos abiertos entre los hosts](#puertos-y-protocolos-abiertos-entre-los-hosts)

### Tres máquinas host en red

Este tutorial requiere tres hosts Linux que tengan Docker instalado y puedan comunicarse a través de una red. Pueden ser máquinas físicas, máquinas virtuales, instancias de Amazon EC2 o estar alojados de alguna otra manera. Consulta [Implementar en un Swarm](/guides/swarm-deploy/#prerequisites) para conocer una posible configuración de los hosts.

Una de estas máquinas es un administrador (llamado `manager1`) y dos de ellas son trabajadores (`worker1` y `worker2`).

> [!NOTE]
>
> También puedes seguir muchos de los pasos del tutorial para probar un swarm de un solo nodo, en cuyo caso solo necesitas un host. Los comandos para múltiples nodos no funcionarán, pero puedes inicializar un swarm, crear servicios y escalarlos.

#### Instalar Docker Engine en máquinas Linux

Si estás utilizando ordenadores físicos basados en Linux o computadoras proporcionadas en la nube como hosts, sigue las [instrucciones de instalación en Linux](/install/) para tu plataforma. Inicia las tres máquinas y estarás listo. Puedes probar escenarios de swarm tanto de un solo nodo como de múltiples nodos en máquinas Linux.

### La dirección IP de la máquina administradora

La dirección IP debe estar asignada a una interfaz de red disponible para el sistema operativo host. Todos los nodos del swarm necesitan conectarse al administrador en esa dirección IP.

Dado que otros nodos se comunicarán con el nodo administrador en su dirección IP, deberías usar una dirección IP fija.

Puedes ejecutar `ifconfig` en Linux o macOS para ver una lista de las interfaces de red disponibles.

El tutorial utiliza `manager1` : `192.168.99.100`.

### Puertos y protocolos abiertos entre los hosts

Los siguientes puertos deben estar disponibles. En algunos sistemas, estos puertos están abiertos de forma predeterminada.

* Puerto `2377` TCP para la comunicación con y entre los nodos administradores
* Puerto `7946` TCP/UDP para el descubrimiento de nodos en la red superpuesta (overlay network)
* Puerto `4789` UDP (configurable) para el tráfico de la red superpuesta

Si tienes planeado crear una red superpuesta con cifrado (`--opt encrypted`), también debes asegurarte de que se permita el tráfico del protocolo IP 50 (IPSec ESP).

El puerto `4789` es el valor predeterminado para el puerto de la ruta de datos de Swarm, también conocido como puerto VXLAN. Es importante evitar que cualquier tráfico no confiable llegue a este puerto, ya que VXLAN no proporciona autenticación. Este puerto solo debe abrirse a una red confiable y nunca en un cortafuegos perimetral.

Si la red por la que viaja el tráfico de Swarm no es completamente de confianza, se sugiere encarecidamente utilizar redes superpuestas cifradas. Si se utilizan exclusivamente redes superpuestas cifradas, se recomiendan algunas medidas adicionales de seguridad:

* [Personalizar la red ingress predeterminada](/engine/networking/) para usar cifrado
* Solo aceptar paquetes cifrados en el puerto de la ruta de datos (Data Path Port):

```bash
# Example iptables rule (order and other tools may require customization)
iptables -I INPUT -m udp --dport 4789 -m policy --dir in --pol none -j DROP
```

## Siguientes pasos

A continuación, crearás un swarm. 

[Crear un swarm](/engine/swarm/swarm-tutorial/create-swarm/)


