Recup Meetup Meetup January: بهبود ساخت تصاویر با استفاده از ویژگی های BuildKit


این یک پست مهمان توسط کاپیتان داکر نیکلاس دیل ، یک وبلاگ نویس ، گوینده و نویسنده با 15 سال تجربه در زمینه مجازی سازی و اتوماسیون است. او به عنوان مهندس DevOps در Haufe Group ، یک شرکت رسانه دیجیتالی واقع در فرایبورگ ، آلمان فعالیت می کند. او همچنین یک متخصص با ارزش ترین مایکروسافت است.

در این ملاقات مجازی ، من نحوه بهبود ساخت تصاویر را با استفاده از ویژگی های موجود در BuildKit به اشتراک می گذارم. BuildKit یک سازنده جایگزین است که دارای ویژگی های بسیار خوبی مانند حافظه پنهان ، همزمانی و امکان جداسازی ساخت تصویر شما در چندین مرحله است – که برای جدا کردن محیط ساخت از محیط زمان اجرا مفید است.

سازنده پیش فرض در داکر سازنده میراث است. در صورت نیاز به پشتیبانی برای ویندوز ، این کار برای استفاده توصیه می شود. با این حال ، تقریباً در هر مورد دیگر ، استفاده از BuildKit به دلیل زمان ساخت سریع ، امکان استفاده از جلوی ساخت های سفارشی BuildKit ، مراحل ساخت به صورت موازی و سایر ویژگی ها توصیه می شود.

پخش مجدد کامل را در زیر بگیرید و نمایش اسلایدها را برای یادگیری مشاهده کنید. :

  • حافظه نهان را در BuildKit بسازید – به جای اینکه به یک تصویر محلی موجود اعتماد کنید ، buildkit لایه های مناسب تصویر قبلی را از یک رجیستری بیرون می کشد.
  • چگونه BuildKit با اجازه دادن پرونده ها به سوء استفاده از جلوگیری از افشای اعتبار کمک می کند. روند ساخت آنها در حافظه نگه داشته می شوند و روی لایه های تصویر نوشته نشده اند.
  • چگونه BuildKit با نصب سوکت عامل SSH در داخل ساختمان بدون اضافه كردن كلید خصوصی SSH به تصویر ، از دسترسی به سیستم های از راه دور از طریق SSH پشتیبانی می كند.
  • از افزونه CLI buildx برای ساخت متقابل تصاویر برای سیستم عامل های مختلف استفاده کنید.
  • CLI چگونه با استفاده از "زمینه docker" جدید ، می تواند ارتباط را با چندین نمونه از موتور Docker مدیریت کند. توجه داشته باشید که این نرم افزار از انتقال SSH به Docker Engine پشتیبانی کرده است.
  • و در آخر ، نکته ای که فراتر از ساخت تصویر است: در هنگام عیب یابی یک کانتینر در حال اجرا ، می توانید یک کانتینر اشکال زدایی به اشتراک گذاری شبکه و فضای نام PID را شروع کنید. این اجازه می دهد تا اشکال زدایی را بدون تغییر در ظرف نادرست تغییر دهید.

من همچنین چند ابزار را که در گردش کار خودم استفاده می کنم ، پوشش دادم. با یک بسته بندی زیبا به نام "dgoss" تهیه می شود تا از آن به راحتی با Docker استفاده کند. و این حتی یک نقطه پایانی برای سلامتی برای ادغام در تصویر شما

  • چیزهای بی اهمیت ، یک ابزار سیستم عامل از AquaSecurance فراهم می کند که تصاویر را برای آسیب پذیریهای شناخته شده در سیستم عامل و همچنین مدیران بسته های شناخته شده اسکن می کند.
  • سوالات:

    چرا به طور پیش فرض از BuildKit استفاده نمی کنید؟ در اینجا نحوه فعال سازی BuildKit به صورت پیش فرض در پیکربندی docker daemon آورده شده است.

    آیا docker-compose با BuildKit کار می کند؟

    پشتیبانی از BuildKit در docker-compose 1.25.0 اضافه شده است که می توانید با تنظیم DOCKER_BUILDKIT = 1 و COMPOSE_DOCKER_CLI_BUILD = 3

  • مزایای استفاده از BuildKit چیست؟

    علاوه بر ویژگی های ارائه شده ، BuildKit همچنین عملکرد ساخت را در بسیاری موارد بهبود می بخشد.

    چه موقع از اسرار BuildKit استفاده می کنم؟ (تشکر ویژه از کاپیتان براندون میچل برای پاسخ به این سوال)

    اسرار BuildKit یک روش خوب برای استفاده از راز در زمان ساخت است ، بدون آنکه راز موجود در تصویر را ذخیره کند. فکر کنید که می توانید یک دکمه git خصوصی را بکشید بدون اینکه کلید ssh خود را روی تصویر ذخیره کنید. برای زمان اجرا ، اغلب فایلهای آهنگسازی متفاوت برای پشتیبانی از حالت آهنگسازی در مقابل swarm هستند ، هرکدام راز را با روشی متفاوت ، یعنی یک صدا در مقابل صدا (swarm secret) سوار می کنند.

    چگونه می توانم BuildKit را برای افزونه ساخت جنکینز داکر فعال کنم؟

    تنها مرجع BuildKit من كه توانستم پيدا كنم ، اضافه كردن پشتيباني در افزونه Docker Pipeline است.

    آیا BuildKit حافظه نهان ساخت را با سازنده میراث به اشتراک می گذارد؟

    خیر ، انبارها جدا هستند.

    فکر شما در مورد داشتن مرحله آزمایش به عنوان مرحله در ساخت چند مرحله ای چیست؟

    مرحله آزمون می تواند یک مرحله جداگانه در ساخت باشد. اگر مرحله آزمایش نیاز به ابزار ویژه ای داشته باشد ، می تواند مرحله دوم نهایی باشد. اگر ساخت چند مرحله شما در پیچیدگی افزایش می یابد ، به ابزارهای CI / CD نگاهی بیندازید.

    چگونه با کشیدن تصویر قبلی ، صرفه جویی در ساخت زمان صرفه جویی می کند؟

    آیا تصویر ایجاد شده هنوز "یکسان" است یا تفاوت واقعی آن در مصنوع تصویر نهایی وجود دارد؟ معادل) تصاویر.

    آیا بازرسی داکر نشان می دهد که این تصویر با استفاده از BuildKit ساخته شده است؟

    No.

    آیا می دانید ترکیبی از اشکال زدایی با تصاویر / ظروف docker (من از فن آوری های زیر استفاده کنید: Python and Django and Pycharm)؟

    شماره. کسی اینجا مشاوره ای داره؟

    آیا Docker BuildKit از افزونه maven Dockerfile پشتیبانی می شود؟

    اگر سؤال به افزونه Spotify's Dockerfile Maven (که نامشخص است) ارجاع می شود ، پاسخ وجود ندارد. افزونه های دیگر ممکن است هنگام تهیه متغیر محیط DOCKER_BUILDKIT = 1 بتوانند از BuildKit استفاده کنند. به جای تغییر نحوه کار مشتری ، می توانید Daemon را برای استفاده پیش فرض از BuildKit پیکربندی کنید (اولین سؤال بالا را ببینید).

    نظر شما در مورد CRI-O چیست؟

    فکر می کنم Container به دست آورد. دید بیشتر و توسط بسیاری از ارائه دهندگان ابر بعنوان زمان اجرا در عرضه های Kubernetes به تصویب رسیده است. اما من خودم هیچ تجربه ای با CRI-O ندارم.

    برای اطلاع از دیدارهای بعدی ، با استفاده از Docker ID یا Meetup.com به گروه Meetup Meetup Docker بپیوندید.