Remote Docker Proxy
Eine Docker Engine auf einem anderen Server über LAN, VPN oder Tailscale überwachen.
Ein entfernter Docker-Proxy gewährt erhebliche Verwaltungsrechte. Er darf niemals dem Internet ausgesetzt und der rohe Docker-Socket niemals veröffentlicht werden. Bevorzugt wird ein privates Netzwerk mit Quellfilterung; für nicht vertrauenswürdige Netzwerke sollte zusätzlich TLS oder ein authentifizierter Tunnel eingerichtet werden.
LAN- oder Tailscale-Architektur
Auf dem entfernten Docker-Host:
services:
docker-proxy:
image: tecnativa/docker-socket-proxy:v0.5.0
restart: unless-stopped
environment:
CONTAINERS: 1
IMAGES: 1
VOLUMES: 1
NETWORKS: 1
INFO: 1
POST: 1
DELETE: 0
AUTH: 0
BUILD: 0
EXEC: 0
SYSTEM: 0
ports:
# Définissez cette variable dans le .env local de l'hôte distant.
- "${DOCKER_PROXY_BIND_IP}:2375:2375"
volumes:
- /var/run/docker.sock:/var/run/docker.sock:roSetzen Sie DOCKER_PROXY_BIND_IP in der lokalen .env-Datei auf die tatsächliche Tailscale- oder LAN-IP des entfernten Hosts. Diese Datei darf nicht in die Versionskontrolle übernommen werden. Fügen Sie eine Firewall-Regel hinzu, die nur die Quell-IP des NasDash-Hosts auf TCP 2375 zulässt.
In NasDash:
http://PRIVATE_PROXY_IP:2375SSH-Variante ohne Veröffentlichung von Port 2375
Erstellen Sie einen persistenten Tunnel vom NasDash-Host, der einen lokalen Port an 127.0.0.1:2375 auf dem entfernten Host bindet, und machen Sie diesen Port anschließend aus dem NasDash-Container erreichbar. Dieser Ansatz erfordert eine sorgfältige Verwaltung des SSH-Schlüssels und des Tunnel-Dienstes; er wird von NasDash nicht automatisch bereitgestellt.
Testen aus dem Container
docker compose exec nasdash node -e "fetch('http://PRIVATE_PROXY_IP:2375/_ping').then(r=>r.text()).then(console.log)"Falls der Host von der Maschine aus antwortet, aber nicht aus dem Container, prüfen Sie die Docker-Weiterleitung, die Firewall-Regeln und die Tailscale-Regeln. Siehe auch Remote Access.
HTTP ist nur in einem vertrauenswürdigen privaten Netzwerk akzeptabel
Der Proxy authentifiziert diese URL selbst nicht. In einem geteilten oder nicht vertrauenswürdigen Netzwerk sollten Sie eine authentifizierte TLS-Schicht oder einen Tunnel verwenden und die Quellfilterung aufrechterhalten.