En daemon.json-fil kan redan innehålla DNS-, lagrings- eller loggningsinställningar. När proxyn ändras bör dessa nycklar bevaras.

Med Mike Farahs yq v4 tilldelar du de enskilda fälten och skriver en separat kandidat:

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

HTTP-proxylistan erbjuder kandidater för de två HTTP-URL-värdena när offentlig registry-trafik kan använda offentliga mellanhänder; behåll de interna undantagen. strenv läser varje värde som en sträng. env tolkar i stället YAML-värden, vilket är onödigt för dessa URL- och undantagsfält. Namnet på miljövariabeln inuti strenv har inget dollartecken som prefix.

Att tilldela tre fält bevarar andra medlemmar i proxies samt orelaterade inställningar på toppnivå. Alternativet -o=json håller utdata i det format Docker förväntar sig. Ett annat program som heter yq kan ha ett annat uttrycksspråk.

Granska kandidaten innan du ersätter den aktiva filen via maskinens vanliga konfigurationsprocess. Skriver du direkt tillbaka till indata med shell-omdirigering kan filen trunkeras innan yq läser den.

Dessa fältnamn med bindestreck konfigurerar daemonen i Docker Engine. Docker Desktop använder egna proxyinställningar, och CLI:ns proxyobjekt för containermiljön har ett annat schema.

Relaterade artiklar