Proxyvelden van Docker daemon.json bewerken met yq v4
Gebruik yq v4 van Mike Farah om bestaande daemon-instellingen te behouden, proxy-strings in te voegen en een controleerbare JSON-kandidaat te maken.
Een daemon.json-bestand kan al DNS-, opslag- of logginginstellingen bevatten. Bij het wijzigen van de proxy moeten die sleutels behouden blijven.
Met yq v4 van Mike Farah wijst u de afzonderlijke velden toe en schrijft u een aparte kandidaat:
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.jsonDe HTTP-proxylijst biedt kandidaten voor de twee HTTP-URL-waarden wanneer verkeer naar het openbare registry openbare tussenpersonen mag gebruiken; behoud de interne uitzonderingen. strenv leest elke waarde als een string. env parseert daarentegen YAML-waarden, wat voor deze URL- en uitzonderingsvelden niet nodig is. De naam van de omgevingsvariabele binnen strenv heeft geen dollarteken als voorvoegsel.
Het toewijzen van drie velden behoudt andere leden van proxies en ook niet-gerelateerde instellingen op het hoogste niveau. De optie -o=json houdt de uitvoer in het formaat dat Docker verwacht. Een ander programma met de naam yq kan een andere expressietaal hebben.
Controleer de kandidaat voordat u het actieve bestand vervangt via het normale configuratieproces van de machine. Rechtstreeks terugschrijven naar de invoer met shell-omleiding kan het afkappen voordat yq het leest.
Deze veldnamen met koppeltekens configureren de daemon van Docker Engine. Docker Desktop gebruikt zijn eigen proxyinstellingen, en het proxy-object voor de containeromgeving van de CLI heeft een ander schema.