مجازی سازی و Cloud

کاهش اندازه ایمیج های داکر

ایمیج های داکر (Docker Images) یکی از اجزاء اساسی و مهم برای ساختن و اجرای کانتینرها به شمار می روند. با فرض اینکه درک درستی از تفاوت های بین ایمیج های داکر و کانتینرها را دارید، به این موضوع خواهیم پرداخت که چگونه می توان حجم ایمیج های داکر را کاهش داده و در محیط های عملیاتی از Docker Image های سبک تر استفاده کنیم. 

همانطور که می دانید یکی از روش های ساختن ایمیج های داکر، استفاده از داکرفایل Dockerfile می باشد. Dockerfile لیستی از دستورالعمل هاست که بصورت خودکار اجرا شده و در نهایت خروجی آن یک ایمیل داکر مخصوص می باشد. لذا، بایستی در نوشتن این دستورالعمل ها که نهایتا منجر به ساختن ایمیج می گردد دقت کافی داشته باشید تا بتوانید یک ایمیج نهایی مناسب و سبک را تولید کنید. توصیه می شود از بکارگیری ایمیج های سنگین خودداری کنید که این موضوع تاثیر مستقیم در سرعت ایجاد و اجرای اپلیکشن ها و کانتینرها خواهد داشت.

در ادامه شما را با چند نکته مهم و اساسی برای ایجاد ایمیج های داکر سبک تر و با کارآیی بیشتر آشنا خواهیم کرد.

استفاده از ایمیج های پایه ای سبک تر

FROM ubuntu
در همه Dockerfile ها در ابتدا از یک ایمیج پایه برای ساختن ایمیج استفاده می شود. برای مثال استفاده از From Ubuntu، از ایمیج اوبونتو استفاده می کند که بصورت پیش فرض اندازه ایمیج ۱۲۸ مگابایت را در خروجی تنظیم می کند. حال در نظر بگیرید اجرای هر دستور apt-get install هم منجر به نصب توابع کتابخانه ای و ماژول های دیگر می شود که اندازه ایمیج شما را افزایش خواهد داد. پس بهتر است برای ایمیج پایه، از یک ایمیج سبک تری استفاده کنید.

برای مثال FROM alpine باعث استفاده از ایمیج لینوکس آلپاین می شود که اندازه آن به ۵ مگابایت تقلیل می یابد و تفاوت چشمگیری در اندازه نهایی ایمیج شما خواهد داشت.

 ۲٫ ابزارهای خطایابی و دیباگ مانند curl/vim/nano را نصب نکنید

بسیاری از برنامه نویسان ابزارهای curl یا vim را درون Dockerfile ها نصب و اضافه می کنند تا بتوانند برای اهداف خطایابی و رفع مشکلات داخل کانتینرها در اینده استفاده نمایند. اضافه کردن این ابزارها، باعث افزایش اندازه ایمیج نهایی خواهد شد.

لذا توصیه می شود که از این ابزارها فقط برای Dockerfile هایی که برای برنامه نویسان در محیط development می باشد استفاده کنید و آنها را از Dockerfile های مختص محیط های staging یا production حذف کنید تا در آن محیط ها صرفا ایمیج های سبک تری داشته باشید.

۳٫ کاهش دادن تعداد لایه ها

پیشنهاد می شود تعداد لایه های ایمیج را کاهش دهید. برای اینکار بایستی بدانید هر خط (هر استپ) درون Dockerfile باعث ایجاد یک لایه جدید می شود. برای مثال استفاده از دو دستور RUN در دو خط مجزا، باعث ایجاد دولایه در ایمیج می گردد.

FROM debian

RUN apt-get install -y<packageA>

RUN apt-get install -y<packageB>

بنابراین پیشنهاد می شود این دو خط را با یکدیگر ترکیب نمایید. این کار روی فازهایی که در پروسه ساخت ایمیج همراه هست باعث می شود که سایز ایمیج نهایی کاهش پیدا کند و لایه های کمتری ایجاد شوند.

FROM debian

RUN apt-get install -y<packageA><packageB>

 

۴٫ از پارامتر –no-install-recommends در دستور apt-get install استفاده کنید  

اضافه کردن پارامتر –no-install-recommends به انتهای دستور apt-get install بصورت چشمگیری در کاهش اندازه ایمیج کمک خواهد کرد. این کار باعث جلوگیری از نصب پکیج هایی می گردد که وابستگی فنی با دیگر اجزاء ندارند ولی پیشنهاد شده هست که همراه با پکیج های دیگر نصب شوند.

۵٫ اضافه کردن دستور  ADD rm -rf /var/lib/apt/lists/*

برای پاک کردن محتوای ناخواسته می توانید دستور rm -rf /var/lib/apt/list/* را در انتهای دستور Apt-get install اضافه کنید. این پارامتر باعث حذف محتوای مسیر ذکر شده می گردد.

۶٫ استفاده از  fromlatest.io

استفاده از عبارت From latest روی داکرفایل تاثیر گذاشته و حتی گامهای بیشتری را بررسی می کند تا شما بتوانید اندازه ایمیج را کاهش دهید.

۷٫ MULTI-STAGE ساختن

روش multi-stage ساختن باعث می شود Dockerfile به چندین مرحله Stage تقسیم شود که Artifact موردنیاز از هر مرحله به مرحله دیگر منتقل می شود تا در نهایت یک Artifact نهایی در آخرین مرحله تولید و ساخته شود. در این روش، ایمیج نهایی مان هیچ محتوای غیرضروری نخواهد داشت بجز همان artifact لازم و ضروری.

 

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.