ໄຟລ໌ 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 ມີໂຄງຮ່າງອື່ນ.

ບົດຄວາມທີ່ກ່ຽວຂ້ອງ