Modificare i campi proxy di Docker daemon.json con yq v4
Usa yq v4 di Mike Farah per conservare le impostazioni esistenti del daemon, inserire le stringhe proxy e produrre un candidato JSON rileggibile.
Un file daemon.json può già contenere impostazioni DNS, di archiviazione o di registrazione. Cambiando il proxy, queste chiavi vanno conservate.
Con yq v4 di Mike Farah, assegna i singoli campi e scrivi un candidato separato:
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.jsonLa lista di proxy HTTP offre candidati per i due valori di URL HTTP quando il traffico pubblico verso il registry può passare da intermediari pubblici; conserva le eccezioni interne. strenv legge ogni valore come stringa. env invece analizza valori YAML, cosa non necessaria per questi campi di URL ed eccezione. Il nome della variabile d'ambiente dentro strenv non ha il prefisso del dollaro.
Assegnare tre campi conserva gli altri membri di proxies e anche impostazioni di primo livello non correlate. L'opzione -o=json mantiene l'output nel formato atteso da Docker. Un altro programma chiamato yq può avere un linguaggio di espressioni diverso.
Rileggi il candidato prima di sostituire il file attivo con il normale processo di configurazione della macchina. Scrivere direttamente nell'input con la redirezione della shell può troncarlo prima che yq lo legga.
Questi nomi di campo con trattino configurano il daemon di Docker Engine. Docker Desktop usa le proprie impostazioni proxy, e l'oggetto proxy dell'ambiente container della CLI ha un altro schema.