Docker Engine daemon.json: دور زدن پروکسی برای ECR و S3 خصوصی
هنگام دور زدن پروکسی HTTP برای دریافت تصاویر خصوصی ECR از طریق نقطههای پایانی VPC، دانلود لایههای S3 را در نظر بگیرید.
اتصال موفق به یک ثبت ECR خصوصی، دریافت تصویر را کامل نمیکند. ECR مانیفست را فراهم میکند و 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 نامزدهایی برای نشانیهای پروکسی بدون حساب ارائه میدهد؛ استثناهای خصوصی ECR و S3 را حفظ کنید. حساب، منطقه و نام میزبان دانلود لایهها را با نامهایی که دریافت واقعاً استفاده میکند جایگزین کنید. شکلهای نامگذاری S3 و پیکربندی نقطههای پایانی میتوانند متفاوت باشند؛ این مثال فهرست کاملی از نقطههای پایانی AWS نیست. اعمال پیکربندی daemon به راهاندازی مجدد موردنظر daemon نیاز دارد. Docker Desktop از تنظیمات پروکسی خودش استفاده میکند.
دور زدن یک مسیر مستقیم را انتخاب میکند. نمیتواند نقطه پایانی غایب S3 را بسازد، جدول مسیر را متصل کند، دسترسی به سطل را بدهد یا DNS خصوصی را تعمیر کند. پیش از گسترش دور زدن به دامنههای گسترده AWS، این وابستگیها را تأیید کنید.
تنظیمات پروکسی کانتینر در کلاینت Docker، دانلود تصاویر daemon را پیکربندی نمیکند. به همین ترتیب، فرمان AWS CLI که اطلاعات ورود ECR را دریافت میکند پیکربندی پروکسی خودش را دارد؛ اگر آن درخواست جداگانه هم به دسترسی خصوصی نیاز دارد، مقصد API آن را وارد کنید.