Editar os campos de proxy do Docker daemon.json com yq v4
Use o yq v4 de Mike Farah para preservar as configurações existentes do daemon, inserir strings de proxy e produzir um candidato JSON revisável.
Um arquivo daemon.json pode já conter configurações de DNS, armazenamento ou registro. Ao alterar o proxy, essas chaves devem ser preservadas.
Com o yq v4 de Mike Farah, atribua cada campo separadamente e escreva um candidato à parte:
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.jsonA lista de proxies HTTP oferece candidatos para os dois valores de URL HTTP quando o tráfego público para o registry pode usar intermediários públicos; mantenha as exceções internas. O strenv lê cada valor como string. Já o env analisa valores YAML, o que é desnecessário para esses campos de URL e de exceção. O nome da variável de ambiente dentro do strenv não tem prefixo de cifrão.
Atribuir três campos preserva os demais membros de proxies e também configurações de nível superior não relacionadas. A opção -o=json mantém a saída no formato que o Docker espera. Outro programa chamado yq pode ter uma linguagem de expressões diferente.
Revise o candidato antes de substituir o arquivo ativo pelo processo de configuração normal da máquina. Escrever diretamente na entrada com redirecionamento do shell pode truncá-lo antes que o yq o leia.
Esses nomes de campo com hífen configuram o daemon do Docker Engine. O Docker Desktop usa configurações de proxy próprias, e o objeto de proxy de ambiente de contêiner da CLI tem outro esquema.