daemon.json ფაილი შეიძლება უკვე შეიცავდეს DNS, საცავის ან ჟურნალის პარამეტრებს. proxy-ის შეცვლისას ეს გასაღებები უნდა შენარჩუნდეს.

Mike Farah-ის yq v4-ით მიუთითეთ ცალკეული ველები და ჩაწერეთ ცალკე კანდიდატი:

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 proxy-ების სია გთავაზობთ კანდიდატებს ორი HTTP URL მნიშვნელობისთვის, როცა საჯარო registry ტრაფიკმა შეიძლება გამოიყენოს საჯარო შუამავლები; შეინარჩუნეთ შიდა გამონაკლისები. strenv თითოეულ მნიშვნელობას კითხულობს სტრიქონად. env კი YAML მნიშვნელობებს აანალიზებს, რაც ამ URL და გამონაკლისის ველებისთვის ზედმეტია. strenv-ის შიგნით გარემოს ცვლადის სახელს დოლარის პრეფიქსი არ აქვს.

სამი ველის მიწერა ინარჩუნებს proxies-ის სხვა წევრებს და ასევე დაუკავშირებელ ზედა დონის პარამეტრებს. -o=json პარამეტრი გამომავალს ინახავს იმ ფორმატში, რომელსაც Docker ელოდება. yq სახელის სხვა პროგრამას შეიძლება ჰქონდეს განსხვავებული გამოსახულებათა ენა.

გადახედეთ კანდიდატს, სანამ აქტიურ ფაილს შეცვლით მანქანის ჩვეულებრივი კონფიგურაციის პროცესით. shell-ის გადამისამართებით უშუალოდ შეყვანაში უკან ჩაწერამ შეიძლება შეამოკლოს იგი მანამ, სანამ yq წაიკითხავს.

ეს დეფისიანი ველების სახელები აყალიბებს Docker Engine-ის daemon-ს. Docker Desktop იყენებს საკუთარ proxy პარამეტრებს, ხოლო CLI-ის კონტეინერ-გარემოს proxy ობიექტს სხვა სქემა აქვს.

დაკავშირებული სტატიები