از Pista Academy حمایت کنید
خلاصه آموزشی
مرور سریع مفاهیم اصلی پیش از تماشای کامل یا برای جمعبندی بعد از آموزش.
در جلسه 6 آموزش Docker و Kubernetes، مدرس به مفهوم ریدونلی بودن ایمیج در داکر و اهمیت لایهبندی در ساخت ایمیج پرداخته است. همچنین، تفاوت عملکرد بین داکر فایل و داکر فایل دو در زمینه کش کردن لایهها و بهینهسازی فرآیند ساخت ایمیج به طور کامل توضیح داده شده است.
نکات کلیدی
ایمیج در داکر ریدونلی است و پس از ساخت تغییری امکانپذیر نیست.
لایهبندی در ایمیج بهینهسازی فرآیند ساخت و استفاده از کش کمک میکند.
داکر فایل دو به بهینهسازی فرآیند ساخت ایمیج با استفاده از کش کمک میکند.
تفاوت عملکرد بین داکر فایل و داکر فایل دو در زمینه کش کردن لایهها قابل توجه است.
متن ویدیو
متن زمانبندیشده این جلسه برای مرور، جستجو و دسترسی سریعتر.
سلام عرض میکنم خدمت دوستان عزیز. خب بریم سراغ ادامه بحثمون راجع به ایمیج و
کانتینر. یه مبحثی رو میخوام امروز باز
بکنیم
و
مال یه ویدیوی دیگهست. خب بریم اول من یه
چیزی بهتون نشون بدم و حالا در قالب
اون چیزی که میخوام بهتون نشون بدم اون
مفهومی که دنبالشمو بهتون بگم.
خب
میام اینجا فقط بذارید من داکرمو ران کنم
داکر دسکتاپم
خب داکر دسکتاپ من الان رانه اوکی بریم شروع کنیم اول ببینیم چه ایمیجهایی درست
کرده بودیم جلسات قبلی
یکیشو پاک کنم خب تاکر ایمجز
این تک ایمیجیه که من دارم درسته
خب
بذار من بیام یه ایمورج جدید از این بسازم
خب و
حالا بعداً بچهها من پاک کردن ایمیج رو اینا رو بهتون میگم الان این کانتینرایی
که من تا الان ساختمه خب بذارید اینا همه
رو پاک کنم از دسکتاپ پاک کنم
همه رو پاک کنم
ایمیجرم پاک کنم
خیل والیوم و اینا که ندارم خیلی خب البته اینا رو بچهها اینجا با کامندم میتونید
پاک کنید ولی بعداً بهتون میگم
خب همه چی از اول اتفاق بیفته که ببینید. خب ساختن ایمج بچهها دیدید دیگه یه زمانی
میبره یه زمانی طول میکشه تا این دقت
استراکشنو کامل ببره انجام بده. خب الان
میمدا ایمیجز بزنم این ایمیجه که ساخته
شده.
خب اینیجمونه. درسته
حالا یه دونه ازش کانتینر من درست بکنم داکر ران
دش پی
۳۰۰
۳۰۰
آیدی ایمجمونم بیاریم
خب الان این ران شد درسته من بیام اینجا
برم رو لوکال هاست ۳۰۰۰ دار
این اپلیکیشن
خب حالا یک سؤال اینجا پیش میاد
سؤاله چیه من توی اپلیکیشنم بیام یه تغییر بدم مثلاً اینجا
مای مثلاً اینو بکنم یه تایتلو عوض کنم
آیا این تغییره اینجا اتفاق میفته؟ نه.
چه مفهومی رو میخوایم برسونیم؟ اینکه
بچهها شما وقتی یک ایمیجی رو میسازید
اون ایمیج اصطلاحاً میگن ریدونلیه. خب
یعنی شما تو برنامهتون تغییری بدید ایمیجه
تغییر نمیکنه. ایمیجه یه بار ساخته شده
رفته دیگه. خب پس اگر تغییری توی پروژهتون
داده میشه باید برید ایمیج جدید بسازید و
از ایمیج جدید کانتینر جدید بسازید البته
که راه آسونتر داره که جلوتر راجع بهش
صحبت خواهیم کرد ولی فعلاً اینو بدونید که
ایمیج ریدونلی اصطلاحاً یه بار ساخته بشه
دیگه ساخته شده و شما نمیتونی تغییری
داخلش بدی
خب حالا این از این نکته
پس من باید دوباره ایمجو دوباره بسازم
یعنی چی؟ یعنی من بیام اینجا
یه محیط چیزی باز کنم. اوکی داکر پی اس خب این ک این کانتنری که الان
داره را میشه. خب این استاپش بکنین.
این استاپ شد. الان دیگه نباید چیزی داشته باشم. اوکی
این قبلی رو میتونم ببندم مشر. خب
پس من یه ایمیج جدید بسازم میام میگم داکر
بیلد یه بذار ایمیجم بزنیم خب
تش این تک ایمیجمونه درسته خب یه دونه
بیلد میزنم یه دونه جدید بسازه
خب این ایمیج جدیدمه که ساخته شده حالا میام بر مبنای این ایمیج جدید یه کانتنت
جدید درست میکنم
الان عوض شد. پس لازمه که در حقیقت من بیام یه ایمیج جدید بسازم که اون تغییره
رو من داخل پروژهم ببینم. این یه مفهوم.
اما یه مفهوم دیگه هم داریم
که بذارید اونم با یه مثال بهتون بگم.
خب من اینو استاپش بکنم
الان چند تا ایمج داشتم د تا ایمیج درسته دو بار ایمیج ساختم یادتونه دفعه اول که
ایمیج ساختم چقدر زمان برد دیگه خب به
نظرتون اگه الان دوباره یه ایمیج بگم بساز
بدونش که تغییری من ندادما ببینیم چقدر
طول میکشه
یه مقدار سریعتر داره انجام میشه خب
دلیلشم اینه که اینجا رو نگاه کنید یک
اصطلاحی رو داره اینجا نشون میده کش
کش کش کش
یعنی چی؟ یعنی اینکه من زمانی که دارم در
حقیقت ایمیجو مجدد میسازم یه سری مراحلو
از اون قبلی استفاده کردم ایمیج قبلیه چون
تغییری نداشتم اصطلاحاً میگن لایهها رو
کشف کردن
ما یه مفهومی داریم توی ایمج به نام لایه
هر استپی که شما داخل این داکتر فایلتون
مینویسید یک لایهای رو تشکیل میده تا
اینجا این آخریه رو این یه لایه جداست
این لایه جداست این لایه زمانی فعال میشه
که کانتنر شما بیارید بالا و این د تا
کامند اجرا بشه
یه کامند ببخشید خب پس ما یه مفهومی داریم
به نام لایه توی
ایمج که هر کدوم از این استپهای
اینستراکشن که شما مینویسید یک لایهای
رو تشکیل میده حالا اگر مثلاً میگم من
فایلم تغییر نکرده باشه این لایهها رو
میره از کش درست میکنه میگیره خب خب مگر
اینکه یه لایهای تغییر کنه یه چیزی هم
بگم وقتی یه لایه تغییر بکنه تمام
لایههای بعد از اون دوباره ساخته میشه
دیگه کش نمیشه خب اینجا یه نکته ریزی وجود
داره
پس اگر
لایهها وابستن به لایه قبلیشون
ترتیب اینستراکشن خیلی میتونه مهم باشه
یه جاهایی یعنی شما اگه بتونید اینو بهینه
ترتیبشو بچینید
میتونید یه سری لایهها رو از دوباره
ساخته شدن جلوگیری بکنید. به عنوان مثال
تو این مثال ما خب من یه تغییری میخوام
تو این روند در حقیقت
پروژهم بدم تو استپاش. بذار اول اینو کپی کنم میخوام ببرمش تو چت
جی ویتی
ازش بپرسیم.
ت ف
تاکر فایل وان من خیلی پرامت نویسی بلد نیستم صادقانه
توی نمیدونم چیزی دارم مینویسم متوجه
خواهد شد احتمالاً متوجه بشه خب دومیه چیه
من میام اینجا پکج. جیسون اول کپی میکنم
پکج. جیسونه خب بعد ام پی ام استار بعدش کپی
همه چی داخل اپ بعدش میبرم کپی رو میزنم خب ببینیم این با اون قبلی چه فرقی داره
از لحاظ عملکرد ساختن ایمیج
میخوام متنشو ننویسم برای همین این کارو میکنم
خب داره میگه که تفاوت بین د تا داکر فایل توی پرفورم بیلد پرفورمنس یعنی اون
پرفورمنس یک موقع ساختن ایمج دارنه خب
مخصوصاً تو بحث کش شدن لایا دقیقاً همون
چیزی که میخواستم بهتون بگم
میگه که هر دو تاشون از لحاظ کانتینری
یکسانه
اما داکر فایل دو یه مقدار که نه بیشتر از یه مقدار بهتر عمل میکنه توی بحث این
موضوع ساخته شدن لایه. خب
چی فرق میکنه توی استراتژی کشینگمون؟ فرق
میکنه.
میگه اگر یک لایه تغییر نکنه خب داکر ریوز
میکنه استفاده مجدد میکنه از ورژن کشف
شده اون لایه اما اگه یک لایه تغییر بکنه
داکر باید اون لایه رو دوباره بسازه و
تمام لایههایی که بعد از اون میاد رو هم
باید دوباره بسازه. دقیقاً اون نکتهای که
من بهتون گفتم. پس ترتیب خیلی مهمه اما
داکر فایل یک میگه یک روش غیره است چرا
میگه شما تو این فایل اول میاید همه سورس
کدتون رو کپی میکنید قبل از اینکه
دپندنسیا رو نصب بکنید راست میگه دیگه من
اینجا
اول میام همه چیو کپی میکنم بعد میام دپندنسیو نصب میکنم درسته
مشکل کجاست
میگه اگر هر تغییری توی فایل شما اتفاق
بیفته
توی لایه A ما یه تغییری داریم تو این لایه زمانی که داره کپی میکنه خب من
فایلم تغییر کرده وقتی این لایه تغییر
بکنه چه اتفاقی میفته تمام لایههای بعدشم
باید دوباره ساخته بشه
اما تو داک فایل د آیا من این فایلم تغییر
کرده پکجسونم نه پس اینو میاد از کش
استفاده میکنه. چون اینو میاد کش استفاده
میکنه لایه بعدی رو میتونه از کش
استفاده بکنه چون اینم تغییر نکرده. وقتی
پکجسون من تغییر نکرده امپی ام استلم
تغییر نمیکنه دیگه فقط میاد این لایه رو
دوباره میسازه و لایههای بعدیش
یعنی عملاً من جلوی
ساخته شدن مجدد یه لایه رو گرفتم.
میگه که پکیج داجستون تغییر نکرده. در نتیجه از لایه آ رو از کش استفاده میکنه.
لایه بی رو هم از کش استفاده میکنه. یعنی
اسکیپ میکنه نصب مجدد رو.
حالا تو این مثال ما چون خیلی مثلاً پروژه بزرگی نیست اونجوری به چشم نمیاد. ولی خب
تو پروژه بزرگتر طبیعتاً زمان میتونه
خیلی مهم باشه.
اوکی میخواستم اینو فقط بفهمونم منظورمو
و اینکه از نوشتن راحت بشم برای همین رفتم
آقا چه عجیبیدی عذر میخوام تو جمن
خب نکته دیگهای میمونه راجع به این
مفهوم
لایه بندی اجازه بدید من داکت نگاه بکنم
نه
خب بریم بیایم ادامهشو جلسه بعدی صحبت کنیم فعلاً خداحافظ
پرسشهای رایج
پاسخ کوتاه و مستقیم به پرسشهایی که معمولاً هنگام یادگیری این موضوع مطرح میشوند.
داکر فایل دو به بهینهسازی فرآیند ساخت ایمیج با استفاده از کش کمک میکند، در حالی که داکر فایل سادهتر است.
بله، ایمیج در داکر ریدونلی است و پس از ساخت تغییری امکانپذیر نیست.
لایهبندی در ایمیج بهینهسازی فرآیند ساخت و استفاده از کش را تسهیل میکند.
آخرین بهروزرسانی محتوای متنی:
در این دورهی عملی و مرحلهبهمرحله، Docker و Kubernetes را از پایه تا سطح قابلاستفاده در پروژههای واقعی یاد میگیرید. از ساخت Image و اجرای Container شروع میکنیم، بعد سراغ Volumeها و مدیریت داده، Networking بین کانتینرها، ساخت اپهای چندکانتینری و Docker Compose میرویم. سپس با یک پروژه واقعی Laravel + PHP محیط توسعه/اجرا را داکرایز میکنیم، روشهای دیپلوی کانتینرها را بررسی میکنیم و در نهایت وارد Kubernetes میشویم: مفاهیم اصلی، مدیریت دیتا و Volume، شبکه در K8s و در پایان استقرار روی AWS EKS. این دوره مناسب چه کسانی است؟ برنامهنویسها و تیمهای بکاند/فرانت که میخواهند محیط اجرا و دیپلوی استاندارد داشته باشند افراد علاقهمند به DevOps و Cloud کسانی که Docker را شروع کردهاند ولی Kubernetes و Deploy را جدی میخواهند پیشنیازها: آشنایی مقدماتی با ترمینال (Linux/Windows) و مفاهیم کلی وب/اپلیکیشن (کافی است). سرفصلها (طبق دوره) Docker Images & Containers (مبانی اصلی) Managing Data & Volumes (مدیریت داده و پایداری) Docker Networking (ارتباط بین کانتینرها) Multi-Container Apps (ساخت اپ چندکانتینری) Docker Compose (ارکستریشن ساده و حرفهای) Utility Containers & Exec Commands پروژه عملی: Dockerize کردن Laravel + PHP Deploying Docker Containers جمعبندی Docker & Containers شروع Kubernetes Kubernetes Core Concepts (عملی و عمیق) Data & Volumes در Kubernetes Kubernetes Networking Deployment روی AWS EKS 📌 اگر این دوره به کارت اومد، حتماً Subscribe کن و سوالهات رو توی کامنتها بپرس تا پاسخ بدم.