Файлът daemon.json може вече да съдържа настройки за DNS, съхранение или журналиране. При промяна на проксито тези ключове трябва да се запазят.

С yq v4 на Mike Farah задайте отделните полета и запишете отделен кандидат:

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

Списъкът с HTTP проксита предлага кандидати за двете стойности на HTTP URL, когато публичният трафик към registry може да минава през публични посредници; запазете вътрешните изключения. strenv чете всяка стойност като низ. env вместо това анализира YAML стойности, което не е нужно за тези полета за URL и изключения. Името на променливата на средата вътре в strenv няма префикс с долар.

Задаването на три полета запазва останалите членове на proxies, както и несвързаните настройки от най-горно ниво. Опцията -o=json оставя изхода във формата, който Docker очаква. Друга програма, наречена yq, може да има различен език за изрази.

Прегледайте кандидата, преди да замените активния файл чрез нормалния процес за конфигуриране на машината. Писането директно обратно във входа чрез пренасочване на shell може да го отреже, преди yq да го прочете.

Тези имена на полета с тирета конфигурират daemon на Docker Engine. Docker Desktop използва собствени прокси настройки, а прокси обектът за средата на контейнера в CLI има друга схема.

Подобни статии