Proxy-Felder in Docker daemon.json mit yq v4 bearbeiten
Mit yq v4 von Mike Farah bestehende daemon-Einstellungen erhalten, Proxy-Strings einfügen und einen prüfbaren JSON-Kandidaten erzeugen.
Eine daemon.json kann bereits DNS-, Speicher- oder Logging-Einstellungen enthalten. Beim Ändern des Proxys sollten diese Schlüssel erhalten bleiben.
Mit yq v4 von Mike Farah weisen Sie die einzelnen Felder zu und schreiben einen separaten Kandidaten:
http_proxy='http://proxy.example:8080' \
https_proxy='http://proxy.example:8080' \
no_proxy='localhost,127.0.0.1,.internal.example' \
yq -o=json '
.proxies."http-proxy" = strenv(http_proxy) |
.proxies."https-proxy" = strenv(https_proxy) |
.proxies."no-proxy" = strenv(no_proxy)
' /etc/docker/daemon.json > daemon.proxy-candidate.jsonDie HTTP-Proxy-Liste bietet Kandidaten für die beiden HTTP-URL-Werte, wenn öffentlicher Registry-Verkehr öffentliche Vermittler nutzen darf; die internen Ausnahmen bleiben erhalten. strenv liest jeden Wert als String. env dagegen parst YAML-Werte, was für diese URL- und Ausnahmefelder unnötig ist. Der Name der Umgebungsvariablen in strenv hat kein Dollar-Präfix.
Die Zuweisung von drei Feldern erhält andere Mitglieder von proxies sowie unabhängige Einstellungen der obersten Ebene. Die Option -o=json hält die Ausgabe im Format, das Docker erwartet. Ein anderes Programm namens yq kann eine andere Ausdruckssprache haben.
Prüfen Sie den Kandidaten, bevor Sie die aktive Datei über den üblichen Konfigurationsweg der Maschine ersetzen. Ein direktes Zurückschreiben in die Eingabe per Shell-Umleitung kann sie kürzen, bevor yq sie liest.
Diese Feldnamen mit Bindestrich konfigurieren den daemon von Docker Engine. Docker Desktop verwendet eigene Proxy-Einstellungen, und das Proxy-Objekt der Container-Umgebung in der CLI hat ein anderes Schema.