Docker Engine daemon.json: ข้ามพร็อกซีสำหรับ ECR และ S3 แบบส่วนตัว
คำนึงถึงการดาวน์โหลดเลเยอร์จาก S3 เมื่อข้ามพร็อกซี HTTP สำหรับการดึงอิมเมจ ECR แบบส่วนตัวผ่านปลายทาง VPC
การเชื่อมต่อรีจิสทรี ECR แบบส่วนตัวได้สำเร็จยังไม่ถือว่าการดึงอิมเมจเสร็จสมบูรณ์ ECR ให้ manifest ส่วน Amazon S3 เก็บเลเยอร์ของอิมเมจ ดังนั้นการข้ามพร็อกซีที่ครอบคลุมเฉพาะรีจิสทรีอาจทำให้การดาวน์โหลดเลเยอร์ไปอีกเส้นทางหนึ่ง
สำหรับการเข้าถึงแบบส่วนตัวผ่านปลายทาง VPC ให้ตรวจสอบทั้งสองเส้นทาง:
- ปลายทางอินเทอร์เฟซของ ECR และการกำหนดค่า DNS แบบส่วนตัว
- ปลายทาง S3 ตารางเส้นทางที่เชื่อมโยง และนโยบายที่อนุญาตให้เข้าถึงบักเก็ตเลเยอร์ของ ECR
จากนั้นใส่ชื่อที่ข้ามพร็อกซีที่เกี่ยวข้องในโปรเซสที่ทำการดึง สำหรับ Docker Engine แบบเนทีฟที่มีการกำหนดค่าพร็อกซีใน 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 และรายการข้ามพร็อกซีที่มีอยู่ หากการดาวน์โหลดจากรีจิสทรีสาธารณะอื่นอาจใช้ตัวกลางสาธารณะ รายการพร็อกซี HTTP มีผู้สมัครสำหรับ URL พร็อกซีที่ไม่ต้องใช้บัญชี โปรดเก็บการข้าม ECR และ S3 แบบส่วนตัวไว้ แทนที่บัญชี ภูมิภาค และ hostname ของการดาวน์โหลดเลเยอร์ด้วยชื่อที่การดึงใช้จริง รูปแบบชื่อ S3 และการกำหนดค่าปลายทางอาจแตกต่างกัน ตัวอย่างนี้ไม่ใช่รายการปลายทาง AWS ที่ครบถ้วน การใช้การกำหนดค่า daemon ต้องรีสตาร์ต daemon ตามที่ตั้งใจ Docker Desktop ใช้การตั้งค่าพร็อกซีของตนเอง
การข้ามพร็อกซีเลือกเส้นทางตรง ไม่สามารถสร้างปลายทาง S3 ที่ขาดหาย แนบตารางเส้นทาง ให้สิทธิ์เข้าถึงบักเก็ต หรือซ่อม DNS แบบส่วนตัวได้ ยืนยันการพึ่งพาเหล่านี้ก่อนขยายการข้ามไปยังโดเมน AWS ที่กว้าง
การตั้งค่าพร็อกซีของคอนเทนเนอร์ในไคลเอนต์ Docker ไม่ได้กำหนดค่าการดาวน์โหลดอิมเมจของ daemon ในทำนองเดียวกัน คำสั่ง AWS CLI ที่รับข้อมูลรับรองการเข้าสู่ระบบ ECR มีการกำหนดค่าพร็อกซีของตัวเอง รวมปลายทาง API ไว้ด้วยหากคำขอแยกนั้นต้องการการเข้าถึงแบบส่วนตัวเช่นกัน