Docker Engine daemon.json: ຂ້າມ proxy ສຳລັບ ECR ແລະ S3 ແບບ private
ຄິດເຖິງການດາວໂຫຼດ layer ຈາກ S3 ເມື່ອຂ້າມ HTTP proxy ສຳລັບການ pull image ຈາກ ECR ແບບ private ຜ່ານ VPC endpoint.
ການເຊື່ອມຕໍ່ກັບ registry ECR ແບບ private ສຳເລັດແລ້ວ ຍັງບໍ່ໄດ້ເຮັດໃຫ້ການ pull image ສຳເລັດ. ECR ໃຫ້ manifest, ສ່ວນ layer ຂອງ image ແມ່ນ Amazon S3 ເປັນຜູ້ເກັບ. ດັ່ງນັ້ນ ການຂ້າມ proxy ທີ່ກວມເອົາພຽງ registry ອາດເຮັດໃຫ້ການດາວໂຫຼດ layer ໄປທາງອື່ນ.
ສຳລັບການເຂົ້າເຖິງແບບ private ຜ່ານ VPC endpoint, ໃຫ້ກວດທັງສອງທາງ:
- ECR interface endpoint ແລະ ການຕັ້ງຄ່າ DNS ແບບ private ຂອງມັນ.
- S3 endpoint, route table ທີ່ກ່ຽວຂ້ອງ ແລະ policy ທີ່ອະນຸຍາດໃຫ້ເຂົ້າ bucket layer ຂອງ ECR.
ຈາກນັ້ນໃສ່ຊື່ທີ່ຂ້າມ proxy ທີ່ກ່ຽວຂ້ອງໃສ່ process ທີ່ເຮັດການ pull. ສຳລັບ Docker Engine ແບບ native ທີ່ມີການຕັ້ງຄ່າ proxy ໃນ daemon.json ຢູ່ແລ້ວ, ຕົວຢ່າງການຕັ້ງຄ່າສຳລັບ us-east-2 ແມ່ນ:
{
"proxies": {
"http-proxy": "http://proxy.example:8080",
"https-proxy": "http://proxy.example:8080",
"no-proxy": "123456789012.dkr.ecr.us-east-2.amazonaws.com,prod-us-east-2-starport-layer-bucket.s3.us-east-2.amazonaws.com"
}
}
ລວມລາຍການທີ່ຕ້ອງການເຂົ້າກັບການຕັ້ງຄ່າອື່ນຂອງ daemon ແລະ ລາຍຊື່ຂ້າມ proxy ທີ່ມີຢູ່. ຖ້າການດາວໂຫຼດຈາກ registry ສາທາລະນະອື່ນອາດໃຊ້ຕົວກາງສາທາລະນະ, ລາຍຊື່ HTTP proxy ໃຫ້ຜູ້ສະໝັກ URL proxy ທີ່ບໍ່ຕ້ອງມີບັນຊີ; ຮັກສາການຂ້າມ ECR ແລະ S3 ແບບ private ໄວ້. ປ່ຽນບັນຊີ, ພາກພື້ນ ແລະ hostname ຂອງການດາວໂຫຼດ layer ເປັນຊື່ທີ່ການ pull ໃຊ້ຕົວຈິງ. ຮູບແບບຊື່ S3 ແລະ ການຕັ້ງຄ່າ endpoint ອາດແຕກຕ່າງກັນ; ຕົວຢ່າງນີ້ບໍ່ແມ່ນລາຍຊື່ endpoint ຂອງ AWS ທີ່ຄົບຖ້ວນ. ການໃຊ້ການຕັ້ງຄ່າ daemon ຕ້ອງ restart daemon ຕາມທີ່ຕັ້ງໃຈ. Docker Desktop ໃຊ້ການຕັ້ງຄ່າ proxy ຂອງຕົນເອງ.
ການຂ້າມ proxy ເລືອກເສັ້ນທາງຊື່. ມັນສ້າງ S3 endpoint ທີ່ຂາດຢູ່ບໍ່ໄດ້, ຕິດ route table ບໍ່ໄດ້, ໃຫ້ສິດເຂົ້າ bucket ບໍ່ໄດ້ ແລະ ສ້ອມ DNS ແບບ private ບໍ່ໄດ້. ກວດສອບການອີງໃສ່ເຫຼົ່ານັ້ນກ່ອນຂະຫຍາຍການຂ້າມ proxy ໄປຫາໂດເມນ AWS ທີ່ກວ້າງ.
ການຕັ້ງຄ່າ proxy ຂອງ container ໃນ Docker client ບໍ່ໄດ້ຕັ້ງຄ່າການດາວໂຫຼດ image ຂອງ daemon. ເຊັ່ນດຽວກັນ, ຄຳສັ່ງ AWS CLI ທີ່ເອົາ credentials ສຳລັບ login ECR ມີການຕັ້ງຄ່າ proxy ຂອງມັນເອງ; ໃຫ້ລວມປາຍທາງ API ຂອງມັນດ້ວຍ ຖ້າຄຳຮ້ອງແຍກນັ້ນຕ້ອງການການເຂົ້າເຖິງແບບ private ນຳ.