Docker daemon.json-ის proxy ველების რედაქტირება yq v4-ით
გამოიყენეთ Mike Farah-ის yq v4, რომ შეინარჩუნოთ არსებული daemon პარამეტრები, ჩასვათ proxy სტრიქონები და შექმნათ გადასამოწმებელი JSON კანდიდატი.
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.jsonHTTP proxy-ების სია გთავაზობთ კანდიდატებს ორი HTTP URL მნიშვნელობისთვის, როცა საჯარო registry ტრაფიკმა შეიძლება გამოიყენოს საჯარო შუამავლები; შეინარჩუნეთ შიდა გამონაკლისები. strenv თითოეულ მნიშვნელობას კითხულობს სტრიქონად. env კი YAML მნიშვნელობებს აანალიზებს, რაც ამ URL და გამონაკლისის ველებისთვის ზედმეტია. strenv-ის შიგნით გარემოს ცვლადის სახელს დოლარის პრეფიქსი არ აქვს.
სამი ველის მიწერა ინარჩუნებს proxies-ის სხვა წევრებს და ასევე დაუკავშირებელ ზედა დონის პარამეტრებს. -o=json პარამეტრი გამომავალს ინახავს იმ ფორმატში, რომელსაც Docker ელოდება. yq სახელის სხვა პროგრამას შეიძლება ჰქონდეს განსხვავებული გამოსახულებათა ენა.
გადახედეთ კანდიდატს, სანამ აქტიურ ფაილს შეცვლით მანქანის ჩვეულებრივი კონფიგურაციის პროცესით. shell-ის გადამისამართებით უშუალოდ შეყვანაში უკან ჩაწერამ შეიძლება შეამოკლოს იგი მანამ, სანამ yq წაიკითხავს.
ეს დეფისიანი ველების სახელები აყალიბებს Docker Engine-ის daemon-ს. Docker Desktop იყენებს საკუთარ proxy პარამეტრებს, ხოლო CLI-ის კონტეინერ-გარემოს proxy ობიექტს სხვა სქემა აქვს.