แก้ไขฟิลด์พร็อกซีของ 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 เสนอตัวเลือกสำหรับค่า URL แบบ HTTP ทั้งสองค่าเมื่อทราฟฟิกไปยัง registry สาธารณะอาจใช้ตัวกลางสาธารณะ ควรคงการข้ามภายในไว้ strenv อ่านแต่ละค่าเป็นสตริง ส่วน env จะแยกวิเคราะห์ค่า YAML ซึ่งไม่จำเป็นสำหรับฟิลด์ URL และการข้ามเหล่านี้ ชื่อตัวแปรสภาพแวดล้อมภายใน strenv ไม่มีเครื่องหมายดอลลาร์นำหน้า
การกำหนดสามฟิลด์จะรักษาสมาชิกอื่นของ proxies รวมถึงการตั้งค่าระดับบนที่ไม่เกี่ยวข้องไว้ด้วย ตัวเลือก -o=json ทำให้ผลลัพธ์อยู่ในรูปแบบที่ Docker คาดหวัง โปรแกรมอื่นชื่อ yq อาจมีภาษานิพจน์ที่ต่างกัน
ตรวจสอบตัวเลือกก่อนแทนที่ไฟล์ที่ใช้งานผ่านกระบวนการกำหนดค่าตามปกติของเครื่อง การเขียนกลับไปยังไฟล์อินพุตโดยตรงด้วยการเปลี่ยนเส้นทางของเชลล์อาจตัดไฟล์ก่อนที่ yq จะอ่าน
ชื่อฟิลด์ที่มีขีดกลางเหล่านี้กำหนดค่า daemon ของ Docker Engine ส่วน Docker Desktop ใช้การตั้งค่าพร็อกซีของตัวเอง และออบเจ็กต์พร็อกซีสภาพแวดล้อมคอนเทนเนอร์ของ CLI มีสคีมาอีกแบบ