Plik daemon.json może już zawierać ustawienia DNS, pamięci masowej lub logowania. Przy zmianie proxy te klucze powinny pozostać.

Za pomocą yq v4 Mike'a Faraha przypisz poszczególne pola i zapisz osobnego kandydata:

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

Lista proxy HTTP oferuje kandydatów dla obu wartości URL HTTP, gdy publiczny ruch do registry może korzystać z publicznych pośredników; zachowaj wewnętrzne wyjątki. strenv odczytuje każdą wartość jako ciąg. env natomiast analizuje wartości YAML, co nie jest potrzebne dla tych pól URL i wyjątków. Nazwa zmiennej środowiskowej wewnątrz strenv nie ma prefiksu dolara.

Przypisanie trzech pól zachowuje pozostałych członków proxies oraz niepowiązane ustawienia najwyższego poziomu. Opcja -o=json utrzymuje dane wyjściowe w formacie oczekiwanym przez Docker. Inny program o nazwie yq może mieć inny język wyrażeń.

Przejrzyj kandydata, zanim zastąpisz aktywny plik zwykłym procesem konfiguracji maszyny. Zapis bezpośrednio do pliku wejściowego przez przekierowanie powłoki może go obciąć, zanim yq go odczyta.

Te nazwy pól z myślnikiem konfigurują daemon Docker Engine. Docker Desktop używa własnych ustawień proxy, a obiekt proxy środowiska kontenera w CLI ma inny schemat.

Powiązane artykuły