Редагування полів проксі в Docker daemon.json за допомогою yq v4
Використовуйте yq v4 від Mike Farah, щоб зберегти наявні налаштування daemon, вставити рядки проксі та отримати JSON-кандидат для перевірки.
Файл 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 може мати іншу мову виразів.
Перегляньте кандидата, перш ніж замінити активний файл звичайним процесом налаштування машини. Запис безпосередньо назад у вхідний файл через перенаправлення оболонки може обрізати його раніше, ніж yq його прочитає.
Ці назви полів із дефісом налаштовують daemon Docker Engine. Docker Desktop використовує власні налаштування проксі, а об'єкт проксі оточення контейнера в CLI має іншу схему.