ແກ້ໄຂຊ່ອງ proxy ຂອງ Docker daemon.json ດ້ວຍ yq v4
ໃຊ້ yq v4 ຂອງ Mike Farah ເພື່ອຮັກສາການຕັ້ງຄ່າ daemon ທີ່ມີຢູ່, ໃສ່ສະຕຣິງ proxy ແລະສ້າງຜູ້ສະໝັກ JSON ທີ່ກວດສອບໄດ້.
ໄຟລ໌ daemon.json ອາດມີການຕັ້ງຄ່າ DNS, ການເກັບຂໍ້ມູນ ຫຼື ການບັນທຶກຢູ່ແລ້ວ. ເມື່ອປ່ຽນ proxy ຄວນຮັກສາກະແຈເຫຼົ່ານັ້ນໄວ້.
ດ້ວຍ 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ລາຍຊື່ proxy HTTP ສະເໜີຜູ້ສະໝັກສຳລັບຄ່າ URL HTTP ທັງສອງ ເມື່ອການຈະລາຈອນ registry ສາທາລະນະອາດໃຊ້ຕົວກາງສາທາລະນະ; ຮັກສາການຂ້າມພາຍໃນໄວ້. strenv ອ່ານແຕ່ລະຄ່າເປັນສະຕຣິງ. env ກົງກັນຂ້າມວິເຄາະຄ່າ YAML ເຊິ່ງບໍ່ຈຳເປັນສຳລັບຊ່ອງ URL ແລະ ການຂ້າມນີ້. ຊື່ຕົວແປສະພາບແວດລ້ອມພາຍໃນ strenv ບໍ່ມີຄຳນຳໜ້າໂດລາ.
ການກຳນົດສາມຊ່ອງຮັກສາສະມາຊິກອື່ນຂອງ proxies ພ້ອມທັງການຕັ້ງຄ່າລະດັບເທິງທີ່ບໍ່ກ່ຽວຂ້ອງ. ຕົວເລືອກ -o=json ຮັກສາຜົນລັບໃນຮູບແບບທີ່ Docker ຄາດຫວັງ. ໂປຣແກຣມອື່ນຊື່ yq ອາດມີພາສານິພົດແຕກຕ່າງ.
ກວດສອບຜູ້ສະໝັກກ່ອນປ່ຽນໄຟລ໌ທີ່ໃຊ້ງານຜ່ານຂະບວນການຕັ້ງຄ່າປົກກະຕິຂອງເຄື່ອງ. ການຂຽນກັບໄປທີ່ຂໍ້ມູນເຂົ້າໂດຍກົງດ້ວຍການປ່ຽນທິດທາງ shell ອາດຕັດມັນກ່ອນ yq ອ່ານ.
ຊື່ຊ່ອງທີ່ມີເຄື່ອງໝາຍຂີດລົບເຫຼົ່ານີ້ຕັ້ງຄ່າ daemon ຂອງ Docker Engine. Docker Desktop ໃຊ້ການຕັ້ງຄ່າ proxy ຂອງຕົນເອງ, ແລະວັດຖຸ proxy ສະພາບແວດລ້ອມຄອນເທນເນີຂອງ CLI ມີໂຄງຮ່າງອື່ນ.