Un fichier daemon.json peut déjà contenir des réglages DNS, de stockage ou de journalisation. Lors du changement de proxy, ces clés doivent être conservées.

Avec yq v4 de Mike Farah, affectez chaque champ séparément et écrivez un candidat distinct :

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 liste de proxys HTTP propose des candidats pour les deux valeurs d'URL HTTP lorsque le trafic public vers le registry peut passer par des intermédiaires publics ; conservez les exceptions internes. strenv lit chaque valeur comme une chaîne. env, lui, analyse des valeurs YAML, ce qui est inutile pour ces champs d'URL et d'exception. Le nom de la variable d'environnement dans strenv n'a pas de préfixe dollar.

Affecter trois champs conserve les autres membres de proxies ainsi que les réglages de premier niveau sans rapport. L'option -o=json maintient la sortie dans le format attendu par Docker. Un autre programme nommé yq peut avoir un langage d'expressions différent.

Relisez le candidat avant de remplacer le fichier actif via le processus de configuration habituel de la machine. Écrire directement dans l'entrée avec une redirection du shell peut la tronquer avant que yq ne la lise.

Ces noms de champs avec traits d'union configurent le daemon de Docker Engine. Docker Desktop utilise ses propres réglages de proxy, et l'objet proxy d'environnement de conteneur de la CLI a un autre schéma.

Articles similaires