Installation unter Verwendung des Docker-Images

Stand September 2026: Das Image steht fertig auf Docker Hub bereit. Haben Sie Ihr Image bisher selbst erstellt, lesen Sie „Vom selbst erstellten Image zu Docker Hub wechseln“. Haben Sie es nach der früheren Anleitung erstellt, lesen Sie „Umstieg vom bisherigen Image“.

Mit Docker betreiben Sie die QuickHMI Runtime in Version 14 (Lynx) in einem Container. Das Image steht auf Docker Hub unter quickhmi/runtime für Rechner mit x86-64-Prozessor (amd64) und mit ARM-Prozessor (arm64) bereit, etwa einen Raspberry Pi mit 64-Bit-Betriebssystem. Der Container enthält den Runtime Manager für die Konsole und kann mehrere Instanzen ausführen. Instanzen, Projekte und Zertifikate liegen in Docker-Volumes und bleiben erhalten, wenn der Container neu erstellt wird. Sobald Docker startet, etwa nach einem Neustart des Rechners, laufen auch die Instanzen wieder an.

Voraussetzungen

  • Docker Desktop (Windows, macOS) oder Docker Engine (Linux)
  • Rechner mit amd64- oder arm64-Prozessor; auf einem Raspberry Pi ein 64-Bit-Betriebssystem
  • Internetzugang beim Herunterladen des Images
  • Lizenzierung per Online-Aktivierung; Dongles und serielle Schnittstellen stehen unter Docker Desktop im Container nicht zur Verfügung
  • Die Datenquelle Allen-Bradley steht auf arm64 nicht zur Verfügung.

1. Container starten

docker run -d --name quickhmi --hostname quickhmi --restart unless-stopped --stop-timeout 120 -e ACCEPT_EULA=Y -p 6068:6068 -p 6070:6070 -v qhmi_prog:/home/quickhmi -v qhmi_data:/usr/share/QuickHMI quickhmi/runtime:lynx

Beim ersten Start lädt Docker das passende Image für Ihren Rechner von Docker Hub herunter.

OptionBedeutung
--name quickhmiName des Containers, mit dem Sie ihn in allen weiteren Befehlen ansprechen
--hostname quickhmiRechnername im Container; er steht im TLS-Zertifikat, das QuickHMI beim ersten Start erzeugt
--restart unless-stoppedstartet den Container automatisch, sobald Docker wieder läuft
--stop-timeout 120gibt den Instanzen beim Beenden bis zu 120 Sekunden Zeit, geordnet herunterzufahren
-e ACCEPT_EULA=Ybestätigt, dass Sie den Lizenzvertrag von QuickHMI akzeptieren; ohne diese Angabe beendet sich der Container sofort, docker logs quickhmi zeigt dann einen Hinweis
-p 6068:6068 -p 6070:6070macht Ports der Projekte erreichbar; welche Ports ein Projekt nutzt, legen Sie im Editor fest
-v qhmi_prog:/home/quickhmiVolume für das Programm; Aktualisierungen des Runtime Managers bleiben dadurch erhalten
-v qhmi_data:/usr/share/QuickHMIVolume für Instanzen, Projekte und Zertifikate
quickhmi/runtime:lynxImage und Tag; lynx steht immer für die aktuelle Version von QuickHMI 14 (Lynx)

Hinweis: Geben Sie immer beide Volumes an. Ohne sie gehen Instanzen und Projekte verloren, sobald der Container entfernt wird.

Eine bestimmte Version wählen Sie statt lynx mit ihrer Versionsnummer, zum Beispiel quickhmi/runtime:14.15.2. Einen Tag latest gibt es nicht; ohne Tag meldet Docker, das Image sei nicht gefunden worden.

Mit docker ps prüfen Sie, ob der Container läuft.

Mit Docker Compose starten

Alternativ starten Sie den Container mit Docker Compose. Legen Sie dazu in einem leeren Ordner eine Datei compose.yaml mit folgendem Inhalt an und führen Sie in diesem Ordner docker compose up -d aus:

services:
  quickhmi:
    image: quickhmi/runtime:lynx
    container_name: quickhmi
    hostname: quickhmi
    restart: unless-stopped
    stop_grace_period: 120s
    environment:
      ACCEPT_EULA: "Y"
    ports:
      - "6068:6068"
      - "6070:6070"
    volumes:
      - qhmi_prog:/home/quickhmi
      - qhmi_data:/usr/share/QuickHMI

volumes:
  qhmi_prog:
    name: qhmi_prog
  qhmi_data:
    name: qhmi_data

Die Volumes heißen dabei genauso wie beim docker run oben. Sie können also zwischen beiden Wegen wechseln, ohne Daten zu verlieren. Alle weiteren Befehle auf dieser Seite gelten unverändert.

2. Projekt importieren

  1. Kopieren Sie den Projektexport aus dem Editor in den Container:
docker cp projekt.qexp quickhmi:/usr/share/QuickHMI/import/projekt.qexp
  1. Importieren Sie das Projekt in Instanz 1:
docker exec -it quickhmi qhmiRM -i /usr/share/QuickHMI/import/projekt.qexp -instance=1

Das Projekt ist danach über die Ports erreichbar, die es im Editor zugewiesen bekommen hat, zum Beispiel https://<Rechner>:6070.

Legen Sie Projektexporte immer im Ordner /usr/share/QuickHMI/import ab. Er liegt im Daten-Volume und bleibt erhalten.

Hinweis: Stammt das Projekt aus einer neueren Version als die QuickHMI Runtime im Image, meldet der Import „Update available“ und startet die Instanz noch nicht. Rufen Sie dann den Runtime Manager erneut auf, zum Beispiel mit docker exec -it quickhmi qhmiRM -v; das Update wird dabei angewendet. Starten Sie danach die Instanz mit docker exec -it quickhmi qhmiRM -start -instance=1.

3. Runtime Manager bedienen

Den Runtime Manager für die Konsole starten Sie mit:

docker exec -it quickhmi qhmiRM -r

Dort legen Sie Instanzen an, starten und stoppen sie, ändern Einstellungen und verwalten Zertifikate. Ein grafischer Runtime Manager steht im Container nicht zur Verfügung.

Einzelne Aufgaben lassen sich auch direkt ausführen (jeweils mit docker exec -it quickhmi davor):

BefehlWirkung
qhmiRM -rRuntime Manager mit Menü
qhmiRM -i <Datei> -instance=<ID>Projekt in eine Instanz importieren
qhmiRM -start -instance=<ID>Instanz starten
qhmiRM -stop -instance=<ID>Instanz stoppen
qhmiRM -vVersion anzeigen

Hinweis: Warten Sie nach dem Start des Containers etwa 20 Sekunden, bis die Instanzen erreichbar sind. Vorher meldet der Runtime Manager bei -start oder -stop unter Umständen, die Instanz sei bereits gestartet oder gestoppt, ohne den Befehl auszuführen.

Mehrere Instanzen: Das Projekt jeder Instanz muss mit der QuickHMI Ultimate Edition erstellt worden sein. Jede Instanz braucht eigene Ports. Legen Sie die Instanz im Runtime Manager an und stellen Sie die Ports unter „Change project settings“ › „Ports“ ein. Die Ports müssen beim Start des Containers veröffentlicht sein; für weitere Ports erstellen Sie den Container neu, wie unten beschrieben.

4. Container verwalten

AufgabeVorgehen
Stoppen, starten, neu startendocker stop quickhmi, docker start quickhmi, docker restart quickhmi
Protokoll anzeigendocker logs quickhmi
Ports ändern oder ergänzendocker stop quickhmi, docker rm quickhmi, dann docker run wie oben mit den neuen -p-Angaben und denselben Volumes. Mit Docker Compose: Ports in der compose.yaml ändern und docker compose up -d ausführen
Betriebssystem und Java aktualisierendocker pull quickhmi/runtime:lynx, dann docker stop quickhmi, docker rm quickhmi und docker run wie oben. Mit Docker Compose: docker compose pull und docker compose up -d

Instanzen, Projekte und Zertifikate bleiben dabei erhalten, solange Sie die Volumes nicht löschen. Neuere QuickHMI-Versionen kommen mit dem Import eines Projekts aus der neueren Editor-Version; ein neueres Image ändert die QuickHMI-Version eines bestehenden Containers nicht.

Daten sichern und wiederherstellen

Sichern Sie die beiden Volumes bei gestopptem Container in einen Ordner auf Ihrem Rechner. Ersetzen Sie <Ordner> durch einen vorhandenen Ordner, zum Beispiel C:\Sicherung unter Windows oder /home/benutzer/sicherung unter Linux.

docker stop quickhmi
docker run --rm -v qhmi_data:/daten -v <Ordner>:/sicherung ubuntu:24.04 tar -czf /sicherung/qhmi_data.tgz -C /daten .
docker run --rm -v qhmi_prog:/daten -v <Ordner>:/sicherung ubuntu:24.04 tar -czf /sicherung/qhmi_prog.tgz -C /daten .
docker start quickhmi

Zum Wiederherstellen spielen Sie die Sicherung in leere Volumes zurück und starten den Container danach wie in Abschnitt 1:

docker rm -f quickhmi
docker volume rm qhmi_data qhmi_prog
docker run --rm -v qhmi_data:/daten -v <Ordner>:/sicherung ubuntu:24.04 tar -xzf /sicherung/qhmi_data.tgz -C /daten
docker run --rm -v qhmi_prog:/daten -v <Ordner>:/sicherung ubuntu:24.04 tar -xzf /sicherung/qhmi_prog.tgz -C /daten

Hinweis: docker volume rm löscht die Volumes endgültig. Führen Sie den Befehl erst aus, wenn die Sicherung vollständig vorliegt.

5. Image selbst erstellen

Statt das Image von Docker Hub zu verwenden, können Sie es auch selbst erstellen, zum Beispiel um es anzupassen.

  1. Laden Sie das Paket im Bereich „Docker Image“ auf der Download-Seite von QuickHMI herunter und entpacken Sie es in einen leeren Ordner. Er enthält danach die Dateien Dockerfile, entrypoint.sh und qhmiRM.
  2. Wechseln Sie in diesen Ordner und führen Sie diesen Befehl aus:
docker buildx build --pull -t qhmi_lynx .

Der Punkt am Ende gehört zum Befehl, er steht für den aktuellen Ordner. qhmi_lynx ist der Name des Images. Das Erstellen dauert je nach System einige Minuten.

  1. Starten Sie den Container wie in Abschnitt 1, geben Sie am Ende aber qhmi_lynx statt quickhmi/runtime:lynx an. Die Angabe -e ACCEPT_EULA=Y ist dabei nicht nötig, weil Sie dem Lizenzvertrag schon beim Download zugestimmt haben.

Um Betriebssystem und Java zu aktualisieren, führen Sie den Befehl aus Schritt 2 erneut aus und erstellen den Container danach neu (docker stop quickhmi, docker rm quickhmi, docker run).

Vom selbst erstellten Image zu Docker Hub wechseln

Haben Sie das Image bisher selbst erstellt, wechseln Sie mit denselben Volumes zum Image von Docker Hub. Entfernen Sie dazu den bisherigen Container:

docker stop quickhmi
docker rm quickhmi

Starten Sie den Container danach wie in Abschnitt 1. Veröffentlichen Sie dabei alle Ports, die Ihre Instanzen nutzen. Instanzen, Projekte und TLS-Zertifikat bleiben erhalten.

6. Umstieg vom bisherigen Image

Beim bisherigen Image liegen Instanzen und Projekte im Container selbst. Übernehmen Sie sie beim Umstieg einmalig in die neuen Volumes:

  1. Stoppen Sie den bisherigen Container, entfernen Sie ihn aber noch nicht:
docker stop <bisheriger-container>
  1. Kopieren Sie Daten und Programmverzeichnis in die neuen Volumes. Führen Sie diese beiden Befehle in einer Linux-Shell aus, unter Windows zum Beispiel in WSL:
docker cp <bisheriger-container>:/usr/share/QuickHMI - | docker run --rm -i -v qhmi_data:/ziel ubuntu:24.04 tar -x -C /ziel --strip-components=1
docker cp <bisheriger-container>:/home/quickhmi - | docker run --rm -i -v qhmi_prog:/ziel ubuntu:24.04 tar -x -C /ziel --strip-components=1
  1. Starten Sie den Container wie in Abschnitt 1 beschrieben. Ihre Instanzen starten automatisch.
  2. Prüfen Sie Ihre Projekte. Erst danach entfernen Sie den bisherigen Container mit docker rm <bisheriger-container>.

Hinweis zum TLS-Zertifikat: Zeigt docker logs quickhmi nach dem Umstieg einen Hinweis zum TLS-Zertifikat, erzeugen Sie im Runtime Manager ein neues Zertifikat: docker exec -it quickhmi qhmiRM -r, Instanz wählen, „Certificate manager“. Clients, die bisher dem alten Zertifikat vertraut haben, müssen danach dem neuen vertrauen.