Un fitxer daemon.json pot contenir ja paràmetres de DNS, emmagatzematge o registre. En canviar el proxy, aquestes claus s'han de conservar.

Amb yq v4 de Mike Farah, assigna cada camp per separat i escriu un candidat a part:

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

La llista de proxys HTTP ofereix candidats per als dos valors d'URL HTTP quan el trànsit públic de registry pot passar per intermediaris públics; conserva les exempcions internes. strenv llegeix cada valor com a cadena. env, en canvi, analitza valors YAML, cosa innecessària per a aquests camps d'URL i d'exempció. El nom de la variable d'entorn dins de strenv no porta prefix de dòlar.

Assignar tres camps conserva la resta de membres de proxies i també paràmetres d'alt nivell no relacionats. L'opció -o=json manté la sortida en el format que Docker espera. Un altre programa anomenat yq pot tenir un llenguatge d'expressions diferent.

Revisa el candidat abans de substituir el fitxer actiu mitjançant el procés de configuració habitual de la màquina. Escriure directament al fitxer d'entrada amb redirecció del shell el pot truncar abans que yq el llegeixi.

Aquests noms de camp amb guionet configuren el daemon de Docker Engine. Docker Desktop fa servir la seva pròpia configuració de proxy, i l'objecte de proxy d'entorn de contenidor de la CLI té un altre esquema.

Articles relacionats