En daemon.json-fil kan allerede inneholde DNS-, lagrings- eller logginnstillinger. Når proxyen endres, bør disse nøklene bevares.

Med yq v4 fra Mike Farah tildeler du de enkelte feltene og 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-proxylisten tilbyr kandidater for de to HTTP-URL-verdiene når offentlig registry-trafikk kan gå gjennom offentlige mellomledd; behold de interne unntakene. strenv leser hver verdi som en streng. env tolker derimot YAML-verdier, noe som er unødvendig for disse URL- og unntaksfeltene. Navnet på miljøvariabelen inne i strenv har ingen dollartegn-prefiks.

Tildeling av tre felt bevarer andre medlemmer av proxies samt urelaterte innstillinger på øverste nivå. Alternativet -o=json holder utdata i formatet Docker forventer. Et annet program kalt yq kan ha et annet uttrykksspråk.

Gjennomgå kandidaten før du erstatter den aktive filen via maskinens vanlige konfigurasjonsprosess. Skriver du direkte tilbake til inndata med shell-omdirigering, kan den bli avkortet før yq leser den.

Disse feltnavnene med bindestrek konfigurerer daemonen til Docker Engine. Docker Desktop bruker egne proxyinnstillinger, og CLI-ens proxyobjekt for container-miljøet har et annet skjema.

Relaterte artikler