Un ficheiro daemon.json pode conter xa axustes de DNS, almacenamento ou rexistro. Ao cambiar o proxy deben conservarse esas chaves.

Con yq v4 de Mike Farah, asigne cada campo por separado e escriba un 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.json

A lista de proxies HTTP ofrece candidatos para os dous valores de URL HTTP cando o tráfico público cara ao registry poida usar intermediarios públicos; conserve as excepcións internas. strenv le cada valor como cadea. env, pola contra, analiza valores YAML, algo innecesario para estes campos de URL e de excepción. O nome da variable de contorno dentro de strenv non leva prefixo de dólar.

Asignar tres campos conserva os demais membros de proxies e tamén axustes de nivel superior sen relación. A opción -o=json mantén a saída no formato que Docker espera. Outro programa chamado yq pode ter unha linguaxe de expresións distinta.

Revise o candidato antes de substituír o ficheiro activo mediante o proceso de configuración habitual da máquina. Escribir directamente na entrada cunha redirección de shell pode truncalo antes de que yq o lea.

Estes nomes de campo con guión configuran o daemon de Docker Engine. Docker Desktop usa os seus propios axustes de proxy, e o obxecto de proxy de contorno de contedor da CLI ten outro esquema.

Artigos relacionados