فایل 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 برای دو مقدار URL نوع HTTP کاندیدهایی ارائه می‌دهد، هنگامی که ترافیک عمومی registry ممکن است از واسطه‌های عمومی استفاده کند؛ استثناهای داخلی را نگه دارید. strenv هر مقدار را به‌صورت رشته می‌خواند. در مقابل، env مقادیر YAML را تجزیه می‌کند که برای این فیلدهای URL و استثنا لازم نیست. نام متغیر محیطی درون strenv پیشوند دلار ندارد.

تخصیص سه فیلد، دیگر اعضای proxies و همچنین تنظیمات سطح بالای نامرتبط را حفظ می‌کند. گزینه -o=json خروجی را در قالبی نگه می‌دارد که Docker انتظار دارد. برنامه دیگری به نام yq ممکن است زبان عبارت متفاوتی داشته باشد.

پیش از جایگزینی فایل فعال از طریق فرایند پیکربندی معمول ماشین، کاندید را بازبینی کنید. نوشتن مستقیم به ورودی با تغییر مسیر پوسته می‌تواند پیش از خواندن yq آن را کوتاه کند.

این نام‌های فیلد خط‌دار، daemon مربوط به Docker Engine را پیکربندی می‌کنند. Docker Desktop تنظیمات پروکسی خودش را دارد و شیء پروکسی محیط کانتینر در CLI طرح‌واره دیگری دارد.

مقالات مرتبط