<!--{"title": "Docker Swarm mit abweichendem Port einrichten", "date": "2025-02-06", "slug": "docker-swarm-mit-abweichendem-port-einrichten", "cover": "/static/img/docker-swarm-mit-abweichendem-port-einrichten.webp"}-->
> Kennzeichnung gemäß Artikel 52 Absatz 1 EU AI Act: [💜 <ins>Kein Einsatz von KI</ins>](/page/ai)

**Wir möchten in diesem Artikel über die abweichende Einrichtung eines Swarm-Netzwerks unter vmware berichten. Eine Besonderheit in der Konfiguration von Docker-Swarm unter vmware kann der identische Port (4789) sein, den sowohl vmware, als auch Docker-Swarm nutzen.**

## Einleitung

Wir möchten in diesem Artikel über die abweichende Einrichtung eines Swarm-Netzwerks unter vmware berichten. Eine Besonderheit in der Konfiguration von Docker-Swarm unter vmware kann der identische Port (4789) sein, den sowohl vmware, als auch Docker-Swarm nutzen. Hier ist es notwendig, den ```data-path-port``` zu ändern. Wir gehen hier Schritt für Schritt die Konfiguration durch.

## Umgebung

Wir installieren drei Swarm-Nodes auf einer vmware-Umgebung mit insgesamt 4 Hosts. Die Anzahl der vmware-Hosts ist jedoch irrelevant. Vorausgesetzt werden drei Ubuntu-Core-Server mit der OS-Version 22.04 ohne weitere Konfiguration.

## Basis-Konfiguration

Wir wechseln in den autorisierten Modus um administrative Aktionen ausführen zu können:

Dazu führen wir das Kommando ```sudo su``` aus.

Danach installieren wir die Net-Tools mit dem Kommando ```apt install net-tools```.

Danach installieren wir den Text-Editor nano mit dem Kommando ```apt install nano```.

Im Anschluss deaktivieren wir den Ubuntu-Cloud-Init. Hierzu suchen wir mit dem Kommando ```apt-cache pkgnames | grep cloud-init``` die passende Konfiguration.

Die angezeigte Datei sollte nun bearbeitet werden: ```nano /etc/cloud/cloud.cfg.d/99-disable-cloud-init.cfg```.

Wir ergänzen die Konfiguration um die Zeile ```network: {config: disabled}```.

Jetzt ist ein Neustart der virtuellen Maschinen notwendig.

Im Anschluss konfigurieren wir die Netzwerkeinstellungen der virtuellen Maschinen. Führen Sie die zwei Kommandos aus:

```
cd /etc/netplan
grep -iH enp1s0 *.*
```

Hierbei sollte eine Datei angezeigt werden, die ungefähr so aussieht: ```00-installer-config.yaml```.

Jetzt bearbeiten wir die Datei mit derm Kommando ```nano 00-installer-config.yaml``` und fügen folgenden Inhalt ein:

```
network:
        ethernets:
            enp1s0:
                dhcp4: no
                addresses:
                    - 192.168.122.128/24
                gateway4: 192.168.122.1
                nameservers:
                    addresses: [1.1.1.1, 1.0.0.1]
        version: 2
```

Jetzt aktivieren wir die Konfiguration mit dem Kommando ```netplan apply```.

## Installation von Docker

Installieren Sie Docker mit dem Kommando ```apt install docker.io```.

## Einrichten des Swarm (nur auf dem ersten Server)

Führen Sie foldendes Kommando aus um den Swarm-Modus zu aktivieren. Besonders hervorzuheben, ist der abweichende Port. Dieser hat uns bei unser Installation in dieser Kombination Kopfzerbrechen bereitet. Deswegen teilen wir unseren Lösungsweg:

```
docker swarm init --data-path-port 4788 --advertise-addr 172.29.8.15
```

Beachten Sie, hier bei ```--advertise-addr``` die IP-Adresse Ihrer ersten virtuellen Maschine einzugeben!

Nachdem Sie den Befehl ausgeführt haben wird Swarm initialisiert. Achten Sie hierbei auf die Ausgabe. Es sollte eine Meldung mit Ihrem "Swarm-Key" ersichtlich sein. Sollte der Key nicht angezeigt werden, können Sie ihn mit dem Kommando ```docker swarm join-token worker``` erneut aufrufen.

Hinzufügen der zwei anderen Server zum Swarm
Mit nur einer Node ist ein Swarm ziemlich unnötig. Deswegen fügen wir die zwei weiteren virtuellen Maschinen hinzu:

```docker swarm join --token --KEY-- 172.29.8.15:2377```.

Diesen Befehl führen sie auf jedem Server aus, der dem Swarm beitreten soll. Ersetzen Sie --KEY-- durch Ihren Swarm-Key.
Mit den folgenden Befehlen können Sie Informationen zu Ihrem Swarm abrufen:

```docker info```
```docker node ls```

Jetzt sind alle Server Teil des Swarm.

Möchten Sie die anderen Server ebenfalls zu Manager-Nodes machen, führen Sie diesen Befehl auf dem ersten Server aus: ```docker node promote name```.