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.json

De 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.

Gerelateerde artikelen