توی این پست قراره به بررسی دو تا از قابلیت های زیبای داکر یعنی buildkit و buildx بپردازیم
buildkit چیه؟
یه پروژه روی داکر که بهتون اجازه میده هنگام بیلد ایمیج ها انواعی از ولیوم ها رو به لایه های مختلف اختصاص بدید که برای کش، سکرت ها و ولیوم های عادی قابل استفادس
با استفاده از این قابلیت شما میتونید حتی پکیجر ها رو هم کش کنید حتی اگه پکیج ها تغییر کنن یا برای امنیت بیشتر به ازایه هر لایه میتونید نتورک جداگانه تعیین کنید یا اگه نیاز به کلون کردن یه پروژه ای موقع بیلد دارید میتونید برای اون لایه خاص سکرت تنظیم کنید
buildx چیه؟
buildx باعث میشه که قدرت buildkit بیشتر بشه
و خوب همه قابلیت های اون رو هم داره
مثلا
۱. انواع بیلدر ها (کوبرنتیز، qemu/kvm که معمولا برای مجازی سازی سی پی یو های مختلف و muli-arch build استفاده میشه، کانتینر داکر و داکر)
۲. خروجی گرفتن از کش (رجیستری یا فایل لوکال)
۳. پوش مستقیم ایمیج ها و کش بلافاصله بعد از بیلد
با استفاده از این قابلیت ها میتونید سرعت رو تا ۶ برابر زیاد کنید
خب توضیح کافیه بریم برای استفاده
برای buildkit
به دو روش این رو میتونید فعال کنید
اولین راه تنظیم متغیر محیطی DOCKER_BUILDKIT=1
و دومین راه اضافه کردن بخش زیر به فایل /etc/docker/daemon.json و ریستارت کردن کل داکر
{
“features”:
{
“buildkit”: true
}
}
برای دریافت پوسته هایی که در آینده نیاز داریم به اتصال اینترنت نیاز داریم
و نسخه داکر باید 18.09 یا بالاتر باشد
اینجا یه نمونه داکرفایل داریم برای کش کردن پکیج منیجر apt
# syntax = docker/dockerfile:1.3
FROM debian
RUN rm -f /etc/apt/apt.conf.d/docker-clean; echo ‘Binary::apt::APT::Keep-Downloaded-Packages “true”;’ > /etc/apt/apt.conf.d/keep-cache
RUN –mount=type=cache,target=/var/cache/apt –mount=type=cache,target=/var/lib/apt \
apt update && apt-get –no-install-recommends install -y gcc
بخش syntax = docker/dockerfile:1.3 تعیین کننده پوسته syntax مورد نظر ماست که میتونید نسخه مورد نظر رو از docker hub انتخاب کنید
یه جورایی مثل shebang توی bash
برای buildx
آخرین نسخه buildx رو از این لینک دریافت کنید
https://github.com/docker/buildx/releases/latest
بعد اون رو توی به اسم
~/.docker/cli-plugins/docker-buildx
ذخیره کنید
و بهش دسترسی اجرا بدید
chmod a+x ~/.docker/cli-plugins/docker-buildx
نکنه: فقط نسخه های CE و EE پشتیبانی میشه و از docker.io نمیشه استفاده کرد
اینجا هم مستندات کامل buildx رو میتونید ببینید
https://docs.docker.com/engine/reference/commandline/buildx/
برای شروع هم میتونید از بیلدر پیشفرض استفاده کنید ولی استفاده و ساخت بیلدر خودتون رو پیشنهاد میکنیم
من بهتون پیشنهاد میکنم که از بیلدر های داکر کانتینر و کوبرنتیز استفاده کنید که راحتتر بتونید اونا رو مانیتور کنید
نظرات کاربران