En daemon.json-fil kan allerede indeholde DNS-, lager- eller logningsindstillinger. Når proxyen ændres, bør disse nøgler bevares.

Med Mike Farahs yq v4 tildeler du de enkelte felter 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 tilbyder kandidater til de to HTTP-URL-værdier, når offentlig registry-trafik kan gå gennem offentlige mellemled; behold de interne undtagelser. strenv læser hver værdi som en streng. env fortolker derimod YAML-værdier, hvilket er unødvendigt for disse URL- og undtagelsesfelter. Miljøvariabelnavnet inde i strenv har ingen dollartegnspræfiks.

Tildeling af tre felter bevarer andre medlemmer af proxies samt urelaterede indstillinger på øverste niveau. Indstillingen -o=json holder output i det format, Docker forventer. Et andet program med navnet yq kan have et andet udtrykssprog.

Gennemgå kandidaten, før du erstatter den aktive fil via maskinens normale konfigurationsproces. Hvis du skriver direkte tilbage til inputtet med shell-omdirigering, kan filen blive afkortet, før yq læser den.

Disse feltnavne med bindestreg konfigurerer Docker Engines daemon. Docker Desktop bruger sine egne proxyindstillinger, og CLI'ens proxyobjekt for container-miljøet har et andet skema.

Relaterede artikler