Entfernte Hosts einrichten
Docker OnlyDozzle kann sich mit entfernten Docker-Hosts verbinden. Das ist nützlich, wenn Dozzle in einem Container läuft und du einen anderen Docker-Host überwachen willst.
Mit Dozzle-Agents kannst du dich allerdings mit entfernten Hosts verbinden, ohne den Docker-Socket freizugeben. Mehr dazu auf der Seite Agent.
Dozzle-Agents machen es überflüssig, den Docker-Socket nach außen freizugeben, lassen sich aber nicht mit einem Docker-Socket-Proxy innerhalb des Agent-Stacks kombinieren. Wenn du einen Socket-Proxy allein ohne Agent nutzen willst, siehe den Abschnitt Verbindung über einen Socket-Proxy.
WARNING
Entfernte Hosts wurden durch Agents ersetzt. Agents bieten eine sicherere Möglichkeit, sich mit entfernten Hosts zu verbinden. Entfernte Hosts werden zwar weiterhin unterstützt, empfohlen sind aber Agents. Mehr Informationen und Beispiele findest du auf der Seite Agent. Für einen Vergleich siehe den Abschnitt Agents im Vergleich zu entfernten Verbindungen. Problemen von Nutzern mit entfernten Hosts kann ich nicht nachgehen, das kostet zu viel Zeit.
Verbindung zu entfernten Hosts mit TLS
Entfernte Hosts werden mit --remote-host oder DOZZLE_REMOTE_HOST konfiguriert. Alle Zertifikate müssen ins Verzeichnis /certs eingebunden werden. Das Verzeichnis /certs erwartet /certs/{ca,cert,key}.pem oder, bei mehreren Hosts, /certs/{host}/{ca,cert,key}.pem.
Beachte, dass der Wert {host} hier die konfigurierte IP oder FQDN meint, nicht die optionale Bezeichnung.
Mehrere --remote-host-Optionen können mehrere Hosts angeben. Bei DOZZLE_REMOTE_HOST muss der Wert dagegen kommagetrennt sein.
$ docker run -v /var/run/docker.sock:/var/run/docker.sock -v /path/to/certs:/certs -p 8080:8080 amir20/dozzle --remote-host tcp://167.99.1.1:2376 --remote-host tcp://167.99.1.2:2376services:
dozzle:
image: amir20/dozzle:latest
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /path/to/certs:/certs
ports:
- 8080:8080
environment:
DOZZLE_REMOTE_HOST: tcp://167.99.1.1:2376,tcp://167.99.1.2:2376Verbindung über einen Socket-Proxy
In einem privaten Netzwerk kannst du den Docker Socket Proxy nutzen, der docker.sock ohne TLS bereitstellt. Damit brauchst du keinen Dozzle-Agent, Dozzle verbindet sich stattdessen direkt mit dem Socket-Proxy. Dozzle wird nie versuchen, nach Docker zu schreiben, braucht aber Zugriff auf die List-APIs. Der folgende Befehl startet einen Proxy mit minimalen Rechten:
$ docker container run --privileged -e CONTAINERS=1 -e INFO=1 -v /var/run/docker.sock:/var/run/docker.sock -p 2375:2375 tecnativa/docker-socket-proxyTIP
CONTAINERS=1 wird benötigt, um laufende Container aufzulisten. EVENTS wird ebenfalls gebraucht, ist aber standardmäßig aktiv. INFO=1 wird für die Systeminformationen benötigt.
Dozzle sollte dann ohne Zertifikate laufen. Hier ein Beispiel:
$ docker run -p 8080:8080 amir20/dozzle --remote-host tcp://123.1.1.1:2375services:
dozzle:
image: amir20/dozzle:latest
ports:
- 8080:8080
environment:
DOZZLE_REMOTE_HOST: tcp://123.1.1.1:2375Bei entfernten Hosts ist das Einbinden von /var/run/docker.sock optional. Du brauchst mindestens einen entfernten Host, mit dem du dich verbindest.
WARNING
Der Docker Socket Proxy stellt die Docker-API ins Internet. Das kann ein Sicherheitsrisiko sein, wenn er nicht ordentlich abgesichert ist.
Hosts mit Bezeichnungen versehen
--remote-host unterstützt Host-Bezeichnungen, die du mit | an die Verbindungszeichenfolge anhängst. Zum Beispiel nutzt --remote-host tcp://123.1.1.1:2375|foobar.com foobar.com als Bezeichnung in der Oberfläche. Ein vollständiges Beispiel mit CLI oder Compose:
docker run --volume=/var/run/docker.sock:/var/run/docker.sock -p 8080:8080 amir20/dozzle --remote-host tcp://123.1.1.1:2375|foobar.comservices:
dozzle:
image: amir20/dozzle:latest
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /path/to/certs:/certs
ports:
- 8080:8080
environment:
DOZZLE_REMOTE_HOST: tcp://167.99.1.1:2376|foo.com,tcp://167.99.1.2:2376|bar.comWARNING
Dozzle nutzt die Docker-API, um Informationen über Hosts zu sammeln. Jeder Agent braucht eine eindeutige Host-ID. Dafür wird Dockers System-ID oder die Node-ID verwendet. Bei Swarm ist es die Node-ID. Wenn du nicht alle Hosts siehst, hast du möglicherweise doppelte Hosts mit derselben Host-ID konfiguriert. Entferne zur Behebung die Datei /var/lib/docker/engine-id. Mehr dazu in der FAQ.
Bezeichnung von localhost ändern
localhost ist eine besondere Verbindung und wird anders konfiguriert als --remote-host. Die Bezeichnung für localhost änderst du über --hostname oder die Umgebungsvariable DOZZLE_HOSTNAME. Beispiele zur Verwendung dieser Option findest du auf der Seite Hostname.