Zum Hauptinhalt springen

Installation Docker Container

Was ist Docker

Docker ist eine Softwareplattform, die Anwendungen samt ihrer Abhängigkeiten in isolierten Containern ausführt. Für den OPC Router bedeutet das: Er läuft unabhängig von Betriebssystem und Hardware in jeder Umgebung, in der Docker installiert ist, und bleibt dabei vom Host-System isoliert.

Docker Installation

Um Docker zu installieren, folgen Sie den Anweisungen in der offiziellen Docker-Dokumentation für Ihre Plattform.

Um zu bestätigen, dass die Installation erfolgreich war, führen Sie den Befehl docker --version in der Eingabeaufforderung aus. Wenn Sie eine Meldung wie Docker version 20.10.22, build 3a2c30b erhalten, ist Docker einsatzbereit.

hinweis

Im Containerbetrieb (z.B. Docker, Kubernetes) ist die Lizenzierung mit Online-Synchronisierung erforderlich, wenn dieser ohne TPM2-Modul betrieben wird.

Docker Container mit TPM2

hinweis

Standardmäßig kann die integrierte MongoDB nur im Container selbst erreicht werden. Wenn von außerhalb auf die MongoDB zugegriffen werden soll, muss die Umgebungsvariable MONGO_BIND auf all gesetzt werden.
Mehr Informationen zu Umgebungsvariablen für die integrierte MongoDB finden Sie auf der Seite Konfigurierbare Umgebungsvariablen.

Die OPC Router Docker Images

Die Wahl des Images ist die erste Entscheidung. Der OPC Router verfügt über zwei verschiedene Images:

  • Das Runtime Image (opcrouter/runtime) enthält die OPC Router Anwendung, das Web Management sowie eine integrierte MongoDB, in der die Daten des OPC Routers wie z.B. Projekte gespeichert werden.
  • Das Service Image (opcrouter/service) enthält wie das Runtime Image die Anwendung und das Web Management, jedoch keine integrierte MongoDB. Eine MongoDB muss hier separat angebunden werden, damit die Anwendung lauffähig ist.

Die folgenden Beispiele verwenden das Runtime Image. Wie eine externe Datenbank angebunden wird, beschreibt die Seite Externe Datenbank.

Schnelle OPC Router Testinstallation mit Docker

Der OPC Router 5 Docker Container lässt sich zu Testzwecken schnell durch Ausführen eines einzelnen Befehls innerhalb weniger Sekunden installieren:

docker run -d -e OR_DISABLE_AUTH=true -e OR_I_ACCEPT_EULA=true --name opcrouter5 -p 8080:8080 opcrouter/runtime:latest
hinweis

Mit Ausführen des Befehls stimmen Sie durch das Setzen der Umgebungsvariable OR_I_ACCEPT_EULA auf true den Endbenutzer-Lizenzbedingungen zu.

warnung

Dieser Befehl erzeugt keine persistenten Volumes. Durch das Löschen des Containers über Docker Desktop gehen also alle Daten auf dem Container, wie z.B. konfigurierte Projekte, unwiderruflich verloren. Der Befehl ist daher nicht für den produktiven Einsatz geeignet.

Durch Ausführen des Befehls wird ein neuer Container mit dem Namen opcrouter5 erstellt. Der Port 8080 wird nach außen freigegeben, so dass das Web Management lokal unter der Adresse http://127.0.0.1:8080 erreichbar sein sollte.

Der Befehl docker container rm -f opcrouter5 stoppt und löscht den Container wieder. Die automatisch erstellten temporären Volumes des Containers, welche die Projekt- und Konfigurationsdaten enthalten, werden durch diesen Befehl nicht automatisch gelöscht.

Installation prüfen

Dass das Web Management antwortet, heißt noch nicht, dass die Laufzeit im Container arbeitet. Prüfen Sie deshalb beides – die Oberfläche über den gemappten Port und die Laufzeit über ihren Health-Endpunkt:

curl -i http://localhost:8080/health/runtime/ready

200 bedeutet, dass die Laufzeit bereit ist. Was ein anderer Statuscode bedeutet, steht unter Installation prüfen.

Empfohlenes Runtime-Deployment

Anstelle der Testinstallation wird hier ein Docker Run Befehl beschrieben, der für den produktiven Einsatz geeignet ist. Dieses Kommando kann nicht einfach kopiert und gestartet werden, sondern muss vorher angepasst werden.

docker run -d --pull always \
--name opcrouter5 \
-e OR_I_ACCEPT_EULA=true \
-e INITIAL_USERNAME=***** \
-e INITIAL_PASSWORD=***** \
-e TZ=Europe/Berlin \
-v opc-router-data:/data \
-v opc-router-logs:/var/log/opcrouter \
-p 8080:8080 \
-p 49420:49420 \
opcrouter/runtime:latest
hinweis

Der Befehl setzt OR_I_ACCEPT_EULA auf true. Damit akzeptieren Sie den Endbenutzer-Lizenzvertrag; ohne diese Zustimmung startet der Dienst nicht. Ersetzen Sie außerdem die Platzhalter von INITIAL_USERNAME und INITIAL_PASSWORD durch Ihre eigenen Werte, wenn Sie einen lokalen Passwort-Login verwenden möchten.

Hier werden einige Argumente verwendet:

  • -d: Der Container wird als Hintergrundprozess gestartet
  • --pull always: Sorgt dafür, dass beim Ausführen des Befehls die aktuelle Version des Images heruntergeladen wird, sofern diese von einer bereits lokal vorhandenen Version abweicht
  • --name: Setzt einen eindeutigen Namen für den Container
  • -e: Setzt eine Umgebungsvariable
  • -v: Setzt ein persistentes Volume
  • -p: Veröffentlicht einen internen Port auf dem Host

Von den veröffentlichten Ports wird nur 8080 immer benötigt: Darüber ist das Web Management erreichbar. Die übrigen Ports werden erst gebraucht, wenn die zugehörigen Server-Plug-ins projektiert sind – 49420 ist der Standard-Port des OPC UA Servers. Ports, die Sie nicht benötigen, lassen Sie weg; die vollständige Liste steht unter Netzwerk-Ports.

Bei den Umgebungsvariablen ist zu beachten, dass wir hier beispielhaft einen initialen lokalen Benutzer mit Benutzername (INITIAL_USERNAME) und Passwort (INITIAL_PASSWORD) setzen, mit dem wir uns im Web Management anmelden können. Alternativ ist auch ein reiner SSO-/External-Betrieb ohne INITIAL_USERNAME und INITIAL_PASSWORD möglich, wenn z.B. Microsoft Entra ID oder vorprovisionierte externe Nutzer verwendet werden. Windows-Authentifizierung steht für Docker-Deployments nicht zur Verfügung. Außerdem wird die Zeitzone eingestellt. Eine genauere Erklärung und Auflistung aller konfigurierbaren Umgebungsvariablen finden Sie hier:

Konfigurierbare Umgebungsvariablen

Für die beiden verfügbaren Mount-Pfade werden persistente Volumes angelegt, sodass Daten auf dem Container, wie z.B. die Projektstruktur, Projekt-Backups, Log-Dateien, etc. erhalten bleiben, wenn wir den Container löschen und einen neuen Container mit den gleichen Volumes anlegen. Eine genauere Erklärung der verfügbaren Mount-Pfade finden Sie hier:

Mount-Pfade

Automatische Verbindung mit pronubes Management

Mithilfe von Umgebungsvariablen kann der OPC Router beim Start des Containers automatisch mit einem pronubes Management Tenant verbunden werden. Dadurch erscheint der OPC Router automatisch in der Inbox des Tenants, ohne dass eine manuelle Registrierung erforderlich ist.

docker run -d --name opcrouter-pronubes \
-e OR_I_ACCEPT_EULA=true \
-e OR_CONNECT_TO_PRONUBES_MANAGEMENT=true \
-e OR_ENABLE_PRONUBES_REMOTE_MANAGEMENT=true \
-e OR_PRONUBES_TENANT_ADDRESS="example.pronubes.cloud" \
-e OR_PRONUBES_TENANT_PORT=443 \
-e OR_ENABLE_PRONUBES_REMOTE_MANAGEMENT_AUTH_FORWARD=true \
-e OR_EXTERNAL_USER_ADMIN_EMAILS="[email protected]" \
-e OR_PRONUBES_DISABLE_CERTIFICATE_AUTHORITY=false \
-p 8080:8080 \
opcrouter/runtime:latest
hinweis

Nach erfolgreichem Container-Start erscheint der OPC Router automatisch in der Inbox des pronubes Management Tenants. Überprüfen Sie den Status in der pronubes Management Oberfläche.

Für WebUI-Zugriffe mit Auth Forward müssen passende lokale externe Nutzer vorhanden sein. Diese können über OR_EXTERNAL_USER_ADMIN_EMAILS, OR_EXTERNAL_USER_EDITOR_EMAILS und OR_EXTERNAL_USER_OBSERVER_EMAILS bereits beim Start des Containers angelegt werden.

Eine genauere Erklärung und Auflistung aller pronubes-bezogenen Umgebungsvariablen finden Sie hier:

Umgebungsvariablen für die automatische Verbindung mit pronubes Management