از Pista Academy حمایت کنید
خلاصه آموزشی
مرور سریع مفاهیم اصلی پیش از تماشای کامل یا برای جمعبندی بعد از آموزش.
در جلسه پنجم آموزش جامع Docker و Kubernetes، مدرس به ساخت ایمیج داکر برای اپلیکیشن نود میپردازد. ابتدا فایل داکر نوشته شده و با استفاده از دستور docker build، ایمیج ایجاد میشود. سپس، ایمیج با دستور docker run اجرا میشود و نیاز به تنظیم مپینگ پورتها دارد. در نهایت، اپلیکیشن در پورت مشخص شده اجرا میشود و مشکلات ممکن در اجرای ایمیج بررسی میشود. همچنین، پورت داخلی کانتینر مطرح شده و اشارهای به مباحث پیشرفتهتر در جلسه بعد داده شده است.
نکات کلیدی
برای ساخت ایمیج داکر، فایل داکر نوشته شده و دستور docker build استفاده میشود.
برای اجرای ایمیج، دستور docker run استفاده میشود و نیاز به تنظیم مپینگ پورتها دارد.
پورت داخلی کانتینر در این جلسه مطرح شده است.
مباحث پیشرفتهتر در جلسه بعد مورد بحث قرار خواهند گرفت.
متن ویدیو
متن زمانبندیشده این جلسه برای مرور، جستجو و دسترسی سریعتر.
سلام عرض میکنم خدمت دوستان عزیز. بریم سراغ ادامه بحث داکر و ما میخوایم بریم
سراغ این روش دوم. یعنی من میخوام ایمیج
خودم رو بسازم برا یه اپلیکیشن نود و اون
اپلیکیشنو بیارم بالا روی کانتینر بیارم
بالا. برای اینکه بخوایم یه همچین کاری
بکنیم بچهها من باید یه فایل یه ایمیج
بسازم. برای ساختن ایمیج باید بریم چیکار
کنیم؟ باید بریم بگیم داکر فایل باید
بسازیم.
فقط قبلش بچهها حتماً مطمئن بشید اکستنشن داکرو نصب کرده باشید چون کمک میکنه که
زمانی که کد داکر مینویسید
بهتون کمک میکنه. اینو نصب کرده باشید
حتماً
من نصبش دارم. خوبه خب بریم سراغ اینکه یه
دونه ایمج بسازیم. برای ساختن ایمج
من باید یه سری دستورالعمل بنویسم
توی یکی دو جلسه قبلم دیدیم نمونهشو
اولین چیزی که باید بگم اینه که خب من
نیاز به چه ایمیجی دارم برای اپلیکیشن نز
به ایمیج نود دارم فرام
نوت
من یه بار همه رو مینویسم دستور عملا رو بعد بریم خط به خط با همدیگه بخونیم توضیح
بدم اینجوری فکر کنم بهتر باشه یه بذار
همه رو بنویسم ورکینگ
دایرکتوری توی
استش اپ بشه
بعد کاپی کن
توی اپ
خب این کلیت
دستور عملیه که من لازم دارم برای اینکه
بخوام این ایمیجو بسازم بریم اینو بهتون
توضیح بدم فقط اجازه بدید من یه زوم آره
زوم این رو زیاد کنم خب
بریم سراغ جمنای برای اینکه تنبلی میاد
بنویسم ازش پرسیدم که اینو به من توضیح
بده خب
میگه که بریم سراغ فرام نوت این چی کار میکنه؟
میگه که این میاد اون این این بیس ایمج رو
مشخص میکنه میگه این ایمج که تو داری
میسازی بیسش بر اساس چه ایمیجیه؟ من گفتم
بر اساس نود باشه. خب حالا وقتی میخواد
این خطو رام بکنه ایمیجو بسازه اول لوکالی
نگاه میکنه آیا من لوکالی ایمیج نودو
دارم یا ندارم اگه داشته باشم ازش استفاده
میکنم اگه نداشته باشم میره از داکرها
دانلودش میکنم
میره از داکرهاب نگاه کنید اینو دریافت میکنه میگه توی پروداکشن یه نکتهای هم
گفته
گفته تو پروداکشن بهتره که ورژن رو هم
مشخص بکنید همینجوری ول ولش نکنید خب حالا
اینو ما جلوتر یاد میگیریم ورژن مشخص
کردن کاری نداره اینجا خودش گفته چهجوری
این کارا بکنید
این خط چی میگه ورکینگ دایرکتوری مخفف
ورکینگ دایرکتوری اسلش اپ خب عملاً من
دارم یه دایرکتوری مشخص میکنم توی
کانتینرم و میگم تمام عملیاتها تو این
دایرکتوری اتفاق بیفته
میگه یه فولدر میسازم به اسلش اپ داخل
کانتینر و همه چی داخل اون اتفاق میفته
میگه معادله این که شما سی دی کرده باشید
داخل این دایرکتوری
از این به بعد هر کامندی که در ادامه وجود
داشته باشه مثل کپی مثل ران داخل این
دایرکتوری اتفاق بیفته
و اگر این دایرکتوری نباشه میسازه خودش
بریم خط بعدی
گفتم هر چیزی که داخل این دایرکتوری هست یعنی اینجا منظورم ایناست سمت چپ هر چیزی
که اینجا هست رو کپی کن داخل اسلش اپ داخل
ورکینگ دایرکتوری
اینه میگه که همه فایلها رو از کارنت فولدر من توی کامپیوتر در برمیداره کپی
میکنه داخل اسلش اپ
خب خب داره میگه که اینجوری تمام فایلهای شما از روی سیستم شما در حقیقت کپی میشه
داخل ایمیج.
گفتم بهتون بچهها ایمیج محتویاتش چیه؟
تمام فایلها و کدهای مورد نیاز اجرا شدن
این برنامهست.
خب دستور بعدی چران امپمپ اینستال
زمانی که داره ایمیج رو میسازه این
دستورو ران میکنه. این دستور چیکار
میکرد؟ میومد تمام دپندنسهای مورد نیاز
این برنامه رو نصب میکرد. اون فوردر نود
ماژیلو میساخت.
میگه که میاد این کامندو اگزکیوت میکنه
در طول ففرآیند ساخت این ایمیج.
اینجا نگاه کنید میگه که میاد این کامندو ران میکنه داخل کانتنر و دانلود میکنه
همه دپندنسیها رو. دپندنسیال از کجا میره
میبینه؟ داخل این فایلو میبینه.
خب
اکسپوز
۸۰ حالا اینجا اشتباه گفته ۸۰ باید بذاشتم
۳۰۰ حالا کاری نداریم
میگه که کانتینر قراره به پورت ۸۰ گوش بده منتظر ریکوست پورت ۸۰ باشه
یه نکته اینجا فقط میگه این خیلی هم مهمه
میگه در اصل این پورت رو روی ماشین شما
باز نمیکنهها پورت ۸۰ رو ماشین شما باز
نمیشه. خب
دقیقاً من اینجا باید یه عملیات مپینگی
انجام بدم. حالا اینو الان بهتون میگم
یعنی چی. خب
میگه هر کسی که از این به بعد خواست از این ایمیجه این کانتینررو بسازه اونوقت
اینو ران کن.
بچهها یه فرقی بین سی ام دی و ران وجود
داره. ران زمانی که شما دارید ایمیجو
میسازید این دستور ران اجرا میشه اما سی
ام دی اینجوری نیست.
زمانی که کانتینرو شما بخواید بسازید این
اجرا میشه نه موقع ساخته شدن ایمیج.
منطقیشم همینه دیگه. من نمیخوام وقتی
میخوام ایمیجو بسازم نودمم بیاد بالا
منطقی نیست. موقع کانتینرو میخوام بیارم
بالا باید نودم ران بشه.
دقت میگه این کامندیه که اپلیکیشن شما رو لانچ میکنه. برخلاف ران که توی فراآیند
ساختن ایمیج اجرا میشه سی ام دی زمانی
اجرا میشه که کانتنر داره استارت میشه.
این فرقشو باید قشنگ متوجه بشید.
خب حالا دیگه بقشو کاری نداریم. برگردیم
اینجا.
میخوام ایمیجه رو بسازم چیکار باید بکنم؟
یه دستوری داریم به نام داکر بیلد میاد ایمیجو میسازه
داکر بیلد میره دنبال داکر فایل میگرده
میگم برو داکر بیلدو اجرا کن داکر فایلم
همین جاست کنار گوشتته
خب رفت که بسازم بچهها نگاه کنید خط به خط همه رو اجرا میکنه اینو اجرا کرد اینو
اجرا کرد اینو اجرا کرد
خب ایمیج من ساخته شد. ایمج من ساخته شد. خب و من الان میتونم
ازش استفاده بکنم. خب فقط برای استفاده
ازش نیاز به آیدی نیمیجه دارم.
خب نیاز به آیدی ایمیجه دارم. میام میگم
که داکر
ایمیجز اشتباه نکنم. این آیدیشه بچهها
که اینجا هم دارید میبینید.
این ایمیج آیدیمونه. خب البته که بچهها ما جلوتر بریم تگ زدنو
یاد میگیریم اسم میذاریم براشون که
اصلاً درگیر آیدی نشیم خب حالا من میخوام
بذار من یه کلیر کنم صفحه خالی بشه
خب من میخوام از این ایمیجه که اینجا ساختم یه دونه کانتینر بسازم
میگم داکر
ران این آیدی رو بهش میدم
الان اپلیکیشن نود من ران شد البته استا شد
اوکی پی اس بله
استاپ شده و ران نشده
خب
یه لحظه اجازه بدید من ب لیست ایمجامو نگاه کنم
دش ا میزنم کلشو نشون بدم خب
فک کنم اون ایمیجی که من دنبالشتم این بود
اجازه بدید
خب درسته اون ایمیج آخری که من ساختم این بود ولی من اشتباهاً داشتم از این استفاده
میکردم یه ایمیج دیگهست خب اینو من قبلاً
ساخته بودم یه لحظه شک کردما چون نگاه
کنید بچهها
بذار اینو بعداً بهتون میگم ولش کن ایمیجمون این بود خب الان اپلیکیشن ما ران
شده
پس توزرم من برم اپو باز بکنم باید ببینم
دیگه بریم ببینیم اتفاق میفته
اپلیکیشنمون کار نمیکنه چرا کار نمیکنه خودش اینجا بهمون گفته بود یادتون باشه
جمنای بهمون گفت دلیلش رو گفت شما باید
اینجا یه عملت مپینگ انجام بدید من اینو
یه چیزه قبلش اینو بگم الان این اپلیکیشن
این کانتنر ما رانه دیگه ب من یه ترمینال
دیگه باز میکنم
میگم داکر پی
اس بچهها تمام کانتینرهایی که در حال اجرا هستندو نشون میده اگر کانتنری
استاپ شده باشه نشون نمیده الان من این
کانتنررو استاپش کنم د تا کنترول سی بزنم
استاپ شد بیام اینجا دیگه داکر پی اس نشون نمیده داره نشون میده چرا
من استاپش کردم خب خب بذار استاپش کم
اینجوریست اونت که استاپ آیدیشو میدم
استاپ شد دیگه همچین کانتینری نداریم آخ ببخشید من چرا اینجوری استاپ کردم
واقعاً عذرخواهی میکنم [خنده]
خب داکر
برمیگردم اینجا
داکر من ایمیجو استاپ کردم
داکر استاپ
اسم داکر چی کانتنرمون چیه اینهاش این اسم
کانتنرمونه بذار اینو ببندم اینجا یه ذره
شلوغ شد بذار اصلاً یه بار دیگه از اول
بگم یه ذره شلوغ شد اینجا
کلیر خب
داکر پی اس لیست کانتنری که در حال اجراستو نشون میده میگه این کانتنره الان
داره اجرا میشه خب من این اسمشو کپی
میکنم
میخوام استاپش کنم میگم داکر استاپ
شد حالا اگه بگم داکر پی اس دیگه هیچی بهم نشون نمیده باید بگم داکر پی اس
دش ا که نشونم بده تمام کانتینرا رو
ترمی بستم کلاً یه ذرهو کم کنم
اوکی الان بهتر شد
ایناش این آخرین کانتنری بود که داشتم و
استاپش کردم ۶ ثانیه قبل
پس داک پی اس کانتینر فعالو نشون میده
داکر پی اس دش ا همه رو نشون میده خب حالا
مشکل کانتینرمون چهجوری باید حل بکنیم
باید بیام بگم که داکر
ران وقتی دارم میخوام اجراش بکنم باید عملیات مپینگو انجام بدم پورت رو مشخص
بکنم خب چهجوری این کارو میکنم میام میگم
که
چه پورتی من قراره که منتظر باشم در حقیقت
این اتفاق بیفته میام میگم دش پیت
۳۰۰ دق۰۰
این دومیه بچهها پورتی که شما اینجا مشخص
کردید اولیه پورتیه که من قراره توی در
حقیق سمت لوکالم ببینمش و در حقیقت آیدی
ایمج رو هم باید اینجا بدم
آیدی امجم چند بود این
خب حالا بریم اپلیکیشنو چک کنیم الان درست شد
بین کار میکنه
پس اینجا من باید مشخص میکردم که روی چه پورتی باید منتظر باشم و اینم
پورت داخلی کانتینره حالا راجع به اینا
جلوتر صحبت صحبت خواهیم کرد.
اینم از بالا آوردن یک کانتینر و ساختن یک
ایمیج. بریم بیایم ادعاش جلسه بعدی صحبت
کنیم. فعلاً خداحافظ.
پرسشهای رایج
پاسخ کوتاه و مستقیم به پرسشهایی که معمولاً هنگام یادگیری این موضوع مطرح میشوند.
برای ساخت ایمیج داکر، فایل داکر نوشته شده و دستور docker build استفاده میشود.
ایمیج داکر با استفاده از دستور docker run اجرا میشود و نیاز به تنظیم مپینگ پورتها دارد.
در این جلسه به ساخت ایمیج داکر برای اپلیکیشن نود پرداخته شده و پورت داخلی کانتینر مطرح شده است.
آخرین بهروزرسانی محتوای متنی:
در این دورهی عملی و مرحلهبهمرحله، 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 کن و سوالهات رو توی کامنتها بپرس تا پاسخ بدم.