1. Grundsätzliches
Mit Docker haben Sie die Möglichkeit, Checkmk innerhalb einer leichtgewichtigen, in sich abgeschlossenen Container-Umgebung zu installieren. In diesem Artikel führen wir Sie durch die Einrichtung von Checkmk in Docker und zeigen Ihnen einige Tricks, die das Leben mit Checkmk in Docker einfacher machen.
![]() |
Checkmk stellt offizielle Docker-Images bereit, hat aber keine Kontrolle darüber, welche Eigenschaften das Host-System hat, auf dem Sie die entsprechenden Container einrichten.
Hier gelten die bekannten Vor- und Nachteile von containerisierten Umgebungen.
Es kann in speziellen Fällen zu unerwarteten Problemen in Bezug auf die Performance kommen, beispielsweise wenn der Kernel des Host-Systems deutlich neuer oder deutlich älter ist als der Kernel, den die Checkmk-Installation im Container erwartet.
In diesen Fällen können zusätzliche |
2. Voraussetzungen
Zur Ausführung der in diesem Artikel vorgestellten Befehle benötigen Sie eine funktionierende Installation der Docker Engine und Grundkenntnisse in deren Nutzung.
3. Ein Checkmk-Image beziehen
Um Ihnen die Nutzung als Container so einfach wie möglich zu machen, stellen wir für jede Checkmk-Edition eigene Images zur Verfügung:
|
|
Kommerzielle Editionen |
Beim ersten Start eines dieser Images wird nicht nur der passende Container ausgeführt, sondern auch gleich eine Monitoring-Instanz mit dem Namen cmk
eingerichtet und gestartet.
Diese ist sofort bereit zur Anmeldung mit dem Benutzer cmkadmin
.
3.1. Images für Checkmk Raw
Für Checkmk Raw können Sie das gewünschte Docker-Image direkt aus dem Docker Hub beziehen.
Bei bestehender Internetverbindung sucht die Docker Engine automatisch im Docker Hub nach dem Image-Namen, den Sie zum Anlegen eines Containers angeben.
Sie können direkt zum Abschnitt Start eines Checkmk-Containers springen.
Alternativ dazu laden Sie das Image selbst aus dem Docker Hub oder von der Checkmk-Download-Seite herunter und hinterlegen Sie es auf dem System, in dem Sie einen Checkmk Raw-Container starten möchten.
Mit docker load -i check-mk-*.tar.gz
stellen Sie die Image-Datei für die Docker Engine auf Ihrem Docker-Node zur Verfügung:
root@linux# docker load -i check-mk-*.tar.gz
346f14bf17b9: Loading layer [==================================================>] 80.41MB/80.41MB
87334b162001: Loading layer [==================================================>] 2.048kB/2.048kB
4c6fcf6a2c87: Loading layer [==================================================>] 335.7MB/335.7MB
1ba0c3ef2749: Loading layer [==================================================>] 279.7MB/279.7MB
bebf82ffc112: Loading layer [==================================================>] 1.291GB/1.291GB
88b55249828a: Loading layer [==================================================>] 7.168kB/7.168kB
Loaded image: checkmk/check-mk-raw:2.4.0p9
3.2. Images für die kommerziellen Editionen
Die Images der kommerziellen Editionen sind nicht frei im Docker Hub verfügbar.
Sie können das gewünschte Image entweder manuell herunterladen und auf Ihrem Docker-Node hinterlegen, oder Sie lassen die Docker Engine das Image selbst aus der dafür vorgesehenen Checkmk Docker-Registry herunterladen.
Für das manuelle Herunterladen finden Sie Ihre gewünschte Edition und Version auf der Checkmk-Download-Seite oder im Checkmk-Kundenportal.
Verwenden Sie nach dem Herunterladen docker load -i
wie im Abschnitt Images für Checkmk Raw beschrieben.
Um das Image von der Docker Engine herunterladen zu lassen, loggen Sie sich zunächst in der Checkmk Docker-Registry mit Ihrem Kundenportal-Login ein. Zum Einloggen nutzen Sie den Credential Store von Docker oder den folgenden Befehl:
root@linux# docker login registry.checkmk.com --username myusername
Password:
Login Succeeded
Nach dem erfolgreichen Einloggen kann die Docker Engine über die Registry auf das Image für die gewünschte Version zugreifen. Geben Sie dazu beim Containerstart den vollen Pfad zum gewünschten Image an. Die Docker Engine prüft dann, ob das Image bereits lokal verfügbar ist, und lädt es andernfalls automatisch herunter.
Für die Version 2.4.0p9 von Checkmk Enterprise geben Sie beim Containerstart den vollen Pfad für das Image wie folgt an: registry.checkmk.com/enterprise/check-mk-enterprise:2.4.0p9
Für die entsprechenden Versionen von Checkmk Cloud oder Checkmk MSP ersetzen Sie in diesem Pfad alle Vorkommen von enterprise
durch cloud
beziehungsweise managed
.
4. Start eines Checkmk-Containers
Sie können Checkmk-Images entweder mit docker compose
und einer Compose-Datei oder mit docker container run
unter Angabe einer Reihe von Parametern starten.
Welche Option Sie wählen, hängt von Ihrem konkreten Einsatzszenario ab.
4.1. Start mit docker compose
Das folgende Beispiel zeigt die Variante mit docker compose
, in der es mit wenig Aufwand möglich ist, parallel weitere Container zu starten.
In der Datei compose.yaml
beschreiben Sie mit Parametern die gewünschten Eigenschaften für den zu startenden Docker-Container.
Hier können auch mehrere Container beschrieben werden, die dann zusammen gestartet werden.
Das folgende Beispiel für eine geeignete compose.yaml
-Datei zeigt die Parameter zum Starten eines einzigen Checkmk-Containers.
Die enthaltenen Parameter und ihre Werte werden nachfolgend erläutert.
services:
checkmk:
image: "checkmk/check-mk-raw:2.4.0-latest"
container_name: "monitoring"
environment:
- CMK_PASSWORD=mypassword
- TZ=Europe/Berlin
volumes:
- monitoring:/omd/sites
tmpfs:
- /opt/omd/sites/cmk/tmp:uid=1000,gid=1000
ports:
- 8080:5000
- 8000:8000
restart: always
volumes:
monitoring:
Nähere Informationen zu den benutzten Optionen:
Option | Beschreibung |
---|---|
|
Selbstgewählter sprechender Name für den Docker-Service, für den der Checkmk-Container gestartet werden soll. |
|
Bezeichnung des Checkmk-Images im Format |
|
Selbstgewählter sprechender Name für den Container. Dieser Name muss eindeutig sein und darf auf dem Docker-Node kein zweites Mal verwendet werden. |
environment: - CMK_PASSWORD=mypassword - TZ=Europe/Berlin |
Mit der Umgebungsvariable
|
volumes: - monitoring:/omd/sites |
Diese Angabe bindet die Daten der Instanz in diesem Container an eine persistente Stelle im Dateisystem des Docker-Nodes.
Das Volume namens |
tmpfs: - /opt/omd/sites/cmk/tmp:uid=1000,gid=1000 |
Für eine optimale Performance können Sie ein temporäres Dateisystem direkt im RAM des Docker-Nodes nutzen. Mit dieser Option geben Sie den Pfad zu diesem Dateisystem an. Wenn Sie die ID der Instanz ändern, so muss auch dieser Pfad entsprechend angepasst werden. |
ports: - 8080:5000 - 8000:8000 |
Der Webserver des Containers lauscht standardmäßig auf Port 5000.
In diesem Beispiel wird der Port 8080 des Docker-Nodes an den Port 5000 des Containers gebunden, damit dessen Web-Interface von außen erreichbar ist.
Wenn Sie keinen anderen Container oder Prozess haben, welcher den Standard-HTTP-Port 80 benutzt, können Sie den Container auch daran binden.
In diesem Fall würde die Option so aussehen: Zusätzlich müssen Sie noch den Port des Agent Receivers veröffentlichen, um die Registrierung des Agent Controllers durchführen zu können.
Für bestimmte Szenarien, die über die Grundfunktionalität von Checkmk hinausgehen, müssen weitere Ports explizit freigegeben werden. Dies betrifft beispielsweise den Zugriff auf Livestatus per TCP im verteilten Monitoring oder die Nutzung der Event Console innerhalb eines Checkmk-Containers. Einen Überblick über die dafür relevanten Ports finden Sie im Artikel Ports. |
|
Normalerweise startet ein Container nicht neu, wenn er gestoppt wurde. Mit dieser Option sorgen Sie dafür, dass er eben doch automatisch neu startet. Wenn Sie allerdings einen Container manuell stoppen, wird er nur neu gestartet, wenn der Docker-Daemon neu startet oder der Container selbst manuell neu gestartet wird. |
volumes: monitoring: |
Hier erscheinen alle Volumes, die innerhalb von Services benötigt werden.
In diesem Fall ist das nur das Volume |
Zusätzlich zum checkmk
-Service können Sie in Ihrer compose.yaml
-Datei noch weitere Services definieren, die in der gleichen Containergruppe gestartet werden sollen.
Sobald Sie alles wie gewünscht beschrieben haben, können Sie die Container anlegen und starten.
Führen Sie dazu in dem Verzeichnis, in dem Ihre compose.yaml
-Datei liegt, docker compose up
aus.
Bei docker compose up -d
(für detached) werden die Container im Hintergrund gestartet.
docker compose up
sorgt dafür, dass alle Container und ihre zugehörigen Volumes ordnungsgemäß angelegt werden.
Falls Sie noch kein Image heruntergeladen und auf Ihrem System hinterlegt haben, dauert das Ausführen von docker compose up
einige Minuten, da zu diesem Zeitpunkt das angegebene Image aus dem Docker Hub (nur für Checkmk Raw möglich) oder aus der Checkmk Docker-Registry geladen wird.
Die Ausgabe hier basiert auf einem Szenario, in dem das Image mit docker load -i
vorbereitet wurde.
root@linux# docker compose up
[+] Running 3/3
✔ Network cmk_compose_default Created 0.0s
✔ Volume "cmk_compose_monitoring" Created 0.0s
✔ Container monitoring Created 0.0s
Attaching to monitoring
monitoring | ### CREATING SITE 'cmk'
monitoring | Generating configuration for core (type nagios)...
monitoring | Precompiling host checks...OK
monitoring | Adding /opt/omd/sites/cmk/tmp to /etc/fstab.
monitoring | Going to set TMPFS to off.
monitoring | Updating core configuration...
monitoring | Executing post-create script "01_create-sample-config.py"...OK
monitoring | Executing post-create script "02_cmk-compute-api-spec"...OK
monitoring | Executing post-create script "03_message-broker-certs"...OK
monitoring | Adding /opt/omd/sites/cmk/tmp to /etc/fstab.
monitoring | Going to set TMPFS to off.
monitoring | Skipping Apache restart.
monitoring | Created new site cmk with version 2.4.0p9.cre.
monitoring |
monitoring | The site can be started with omd start cmk.
monitoring | The default web UI is available at http://2403d4ed552d/cmk/
monitoring |
monitoring | The admin user for the web applications is cmkadmin with password: mypassword
monitoring | For command line administration of the site, log in with 'omd su cmk'.
monitoring | After logging in, you can change the password for cmkadmin with 'cmk-passwd cmkadmin'.
monitoring |
monitoring | ### STARTING XINETD
monitoring | * Starting internet superserver xinetd
monitoring | ...done.
monitoring | ### STARTING SITE
monitoring | Starting agent-receiver...OK
monitoring | Starting mkeventd...OK
monitoring | Starting rrdcached...OK
monitoring | Starting redis...OK
monitoring | Starting npcd...OK
monitoring | Starting automation-helper...OK
monitoring | Starting ui-job-scheduler...OK
monitoring | Starting nagios...OK
monitoring | Starting apache...OK
monitoring | Starting crontab...OK
monitoring | ### STARTING CRON
monitoring | ### CONTAINER STARTED
Laufende Container stoppen Sie mit docker compose stop
.
Um bereits angelegte Container erneut zu starten, führen Sie docker compose start
aus.
Sie können die Ausgaben des Containers monitoring
mit docker container logs monitoring
einsehen.
Ausführliche Informationen über den Container, beispielsweise über die in ihn eingebundenen Volumes, erhalten Sie mit docker inspect monitoring
.
4.2. Start mit docker container run
Alternativ zum Ausführen mit docker compose
können Sie das Checkmk-Image mit docker container run
starten.
Dabei übergeben Sie die Angaben aus der compose.yaml
-Datei nun als Parameter.
Der folgende Befehl erzeugt den gleichen Container mit den gleichen Eigenschaften wie im eben gezeigten Beispiel. Die gezeigte Ausgabe basiert auf einem Szenario, in dem das Image noch nicht manuell heruntergeladen wurde.
root@linux# docker container run -dit \
--name monitoring \
-e CMK_PASSWORD='mypassword' \
-e TZ='Europe/Berlin' \
-v monitoring:/omd/sites \
--tmpfs /opt/omd/sites/cmk/tmp:uid=1000,gid=1000 \
-p 8080:5000 \
-p 8000:8000 \
--restart always \
checkmk/check-mk-raw:2.4.0-latest
Unable to find image 'checkmk/check-mk-raw:2.4.0-latest' locally
2.4.0-latest: Pulling from checkmk/check-mk-raw
215ed5a63843: Pull complete
942691e22878: Pull complete
fafdf3fa2522: Pull complete
1888d204a5e5: Pull complete
c126aa904d34: Pull complete
b469f01932b5: Pull complete
Digest: sha256:bbabed3f4f5e88775f872bcf0f1df36660e13d0ebf613e4e6141f4c81e5c6354
Status: Downloaded newer image for checkmk/check-mk-raw:2.4.0-latest
c850572de41592afff9de610d1ef3faecb267bf4fbccf2a9d8dae92dec11aacb
Hier wird der Container im detached-Modus ausgeführt (-d
).
Um die Ausgaben aus dem Container einzusehen, nutzen Sie docker container logs monitoring
.
Ausführliche Informationen über den Container erhalten Sie mit docker inspect monitoring
.
![]() |
Beim Start mit |
4.3. Weitere Optionen bei der Einrichtung
Die bisher gezeigten Beispiele dienen der einfachen Einrichtung von Checkmk-Containern. Für besondere Anwendungsszenarien stehen Ihnen einige weitere Optionen zur Verfügung.
HTTPS
Auch innerhalb eines Docker-Containers können Sie die Weboberfläche Ihrer Instanz über HTTPS absichern. Gängige Praxis hierfür ist es, einen Reverse Proxy zu nutzen, der die Schnittstelle für HTTP(S)-Verbindungen zwischen den Containern in Ihrem System und der Außenwelt darstellt. Dieser Proxy kann sicherstellen, dass nur HTTPS-Verbindungen akzeptiert bzw. an den Checkmk-Container durchgereicht werden.
Falls Sie einen Reverse Proxy nutzen, geben Sie beim Start Ihres Checkmk-Containers gar keine Ports mehr explizit frei. Stattdessen werden dann alle eingehenden und ausgehenden Verbindungen ausschließlich über den Reverse Proxy abgewickelt.
Zusätzliche Umgebungsvariablen
Die Tabelle zeigt alle Checkmk-spezifischen Umgebungsvariablen, die Sie beim Containerstart nutzen können, um Ihren Container wunschgemäß einzurichten.
Dabei geben Sie die Variablenwerte in der Compose-Datei beziehungsweise in der Parameterliste beim Aufruf von docker container run
jeweils in der gleichen Form an wie die schon erwähnten Umgebungsvariablen CMK_PASSWORD
und TZ
.
|
Selbstgewählter Name der zu erstellenden Checkmk-Instanz innerhalb des Containers, falls Sie vom Standard-Instanznamen cmk abweichen möchten. |
|
Einstellung für die Verwendung von Livestatus über TCP. Wählen Sie als Wert hierfür on, wird innerhalb des Containers für die Instanz der Befehl |
|
Adresse eines von Ihnen bereitgestellten Mail-Relay-Servers (z.B. mailrelay.mydomain.com) zum Senden von Checkmk-Benachrichtigungen. Benachrichtigungen werden zunächst von der Instanz innerhalb des Containers an den hier angegebenen Mailserver (SMTP-Relay-Server, Smarthost ohne Authentifizierung) außerhalb des Containers weitergereicht, um von dort dann an das eigentliche Ziel verschickt zu werden. |
5. Nutzung von Checkmk im laufenden Container
Nachdem alle benötigten Dateien geladen wurden und der Container gestartet ist, sollten Sie die GUI von Checkmk über http://localhost:8080/cmk/check_mk/
beziehungsweise über die Adresse des Docker Nodes erreichen:

Sie können sich nun erstmals einloggen und Checkmk ausprobieren.
Um über die Befehlszeile auf Ihre Instanz innerhalb des Containers zuzugreifen, loggen Sie sich als Instanzbenutzer im Container ein.
Dieser Benutzer hat in Checkmk immer den gleichen Namen wie die Instanz, die er verwaltet.
Mit dem folgenden Befehl öffnen Sie eine interaktive Bash-Sitzung im Container monitoring
und loggen sich darin als Benutzer cmk
an:
root@linux# docker container exec -it -u cmk monitoring bash
Danach können Sie Ihre Befehle an die Instanz übergeben.
6. Update
Wie Sie Checkmk im Docker-Container aktualisieren können, ist im Artikel Updates und Upgrades beschrieben.
7. Deinstallation
Wenn Sie einen Container nicht mehr benötigen, können Sie ihn entfernen und bei Bedarf auch die dazugehörigen Volumes löschen. Die Befehle dazu finden Sie in den folgenden Abschnitten.
7.1. Deinstallation mit docker compose
Um einen Container zu entfernen, führen Sie docker compose down
(bei laufendem Container) oder docker compose rm
(bei gestopptem Container) aus.
root@linux# docker compose down
[+] Running 2/2
✔ Container monitoring Removed 6.3s
✔ Network cmk_compose_default Removed 0.1s
Wenn Sie die Option -v
ergänzen, werden zusammen mit dem Container auch die dazugehörigen Volumes auf dem Docker-Node entfernt.
7.2. Deinstallation nach dem Start mit docker container run
Einen mit docker container run
gestarteten Container namens monitoring
stoppen Sie mit docker container stop monitoring
.
Danach können Sie mit docker rm monitoring
den Container entfernen.
Ein Volume namens monitoring
, das Sie nach dem Entfernen des dazugehörigen Containers nicht mehr benötigen, löschen Sie mit docker volume rm monitoring
.
7.3. Das Checkmk-Image löschen
Möchten Sie das gewählte Checkmk-Image gar nicht mehr benutzen, können Sie es mit docker rmi myimageid
entfernen.
Der Befehl docker images
listet alle vorhandenen Images auf.
Identifizieren Sie das Image, das Sie löschen möchten, und fügen Sie die entsprechende Image-ID in Ihren Aufruf von docker rmi
ein.