Editarea câmpurilor proxy din Docker daemon.json cu yq v4
Folosiți yq v4 de la Mike Farah pentru a păstra setările existente ale daemonului, a insera șiruri proxy și a produce un candidat JSON verificabil.
Un fișier daemon.json poate conține deja setări DNS, de stocare sau de jurnalizare. La schimbarea proxy-ului, aceste chei trebuie păstrate.
Cu yq v4 de la Mike Farah, atribuiți fiecare câmp separat și scrieți 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.jsonLista de proxy HTTP oferă candidați pentru cele două valori de URL HTTP atunci când traficul public către registry poate folosi intermediari publici; păstrați excepțiile interne. strenv citește fiecare valoare ca șir. env, în schimb, analizează valori YAML, ceea ce nu este necesar pentru aceste câmpuri de URL și de excepție. Numele variabilei de mediu din interiorul strenv nu are prefix de dolar.
Atribuirea a trei câmpuri păstrează ceilalți membri ai proxies, precum și setările de nivel superior fără legătură. Opțiunea -o=json păstrează ieșirea în formatul așteptat de Docker. Un alt program numit yq poate avea un limbaj de expresii diferit.
Verificați candidatul înainte de a înlocui fișierul activ prin procesul obișnuit de configurare al mașinii. Scrierea directă înapoi în intrare cu redirectare shell îl poate trunchia înainte ca yq să îl citească.
Aceste nume de câmpuri cu cratimă configurează daemonul Docker Engine. Docker Desktop folosește propriile setări de proxy, iar obiectul proxy de mediu al containerului din CLI are altă schemă.