آموزش Docker و Kubernetes — راهنمای عملی راه اندازی از صفر
تا حالا شده کدی که روی سیستم خودت بینقص کار میکرد، روی سرور یا سیستم یه همتیمی از کار بیفته و ساعتها درگیر جملهی معروف «ولی رو سیستم من که کار میکرد» بشی؟ این دقیقاً همون دردیه که Docker حلش میکنه.
Docker و Kubernetes امروز جزو پرتقاضاترین مهارتهای دنیای توسعه و DevOps هستن — چون فرایند توسعه و استقرار نرمافزار، از پروژههای ساده تا پیچیده، رو بهشکل چشمگیری راحتتر میکنن. با Docker کدت رو توی «کانتینر» بستهبندی میکنی و مطمئن میشی که هرجا اجراش کنی، دقیقاً یهجور و قابلپیشبینی کار میکنه.
این دوره یه راهنمای کاملاً عملیه که Docker و Kubernetes رو از پایه و بدون نیاز به هیچ پیشزمینهای بهت یاد میده. همهچیز با تئوری لازم و دهها مثال و دمو توضیح داده میشه — از ایمیج و کانتینر، تا والیوم و نتورکینگ، و در نهایت استقرار و کلاستر Kubernetes. اگه میخوای وارد دنیای DevOps مدرن بشی، این همون نقطهی شروعه.
این دوره دقیقاً برای کیه؟
این دوره برای تو ساخته شده اگه:
- تا حالا اصلاً با Docker یا Kubernetes کار نکردی و میخوای از صفر و اصولی یادش بگیری.
- دقیقاً نمیدونی Docker چیه و چرا اینقدر ازش تعریف میشه — این دوره از همین سوال شروع میکنه.
- توسعهدهندهی وب هستی و میخوای وارد دنیای DevOps مدرن و استقرار حرفهای بشی.
- از مشکلات محیط توسعه خسته شدی و میخوای پروژههات همهجا یکسان اجرا بشن.
- قصد داری رزومهات رو تقویت کنی و یه مهارت پرتقاضا و پردرآمد یاد بگیری.
- در یه تیم کار میکنی و میخوای فرایند توسعه و دیپلوی رو برای همه سادهتر کنی.
چی یاد میگیری؟
توی این دوره از بنیادیترین سوال شروع میکنی: کانتینر چیه و چرا اصلاً به Docker نیاز داری؟ بعد یاد میگیری چطور Docker رو روی هر سیستمی (مک، ویندوز یا لینوکس) نصب و راهاندازی کنی و اولین کانتینرهات رو بسازی.
بعد وارد مفاهیم اصلی میشی: چطور ایمیجهای سفارشی بسازی، از ایمیجهای آماده استفاده کنی و کانتینرها رو مدیریت کنی. دستورهای کلیدی Docker رو یاد میگیری، بعد سراغ موضوعات پیچیدهتر میری — مثل مدیریت و ماندگارسازی داده با والیومها، و نتورکینگ کانتینرها هم با دنیای بیرون و هم بین چند کانتینر. پروژههای تککانتینری و چندکانتینری رو کار میکنی و با Docker Compose آشنا میشی.
و در نهایت میرسی به بخش استقرار — یاد میگیری اپلیکیشنهای Docker رو چطور دیپلوی کنی، چه بهصورت دستی، چه با سرویسهای مدیریتشده، و چه با Kubernetes. کل مسیر با دهها دمو و پروژهی واقعی (با زبانهایی مثل Node.js، Python و PHP) همراهه؛ البته لازم نیست این زبانها رو بلد باشی تا بتونی دوره رو دنبال کنی.
مزیتهای کلیدی
از صفر مطلق، بدون پیشنیاز
هیچ تجربهی قبلی با Docker یا Kubernetes لازم نیست. دوره از پایهایترین مفاهیم شروع میکنه و قدمبهقدم تا موضوعات پیشرفته پیش میره.
واقعاً عملی و پروژهمحور
این دوره پر از دمو و پروژهی واقعیه. بهجای اینکه فقط تئوری بخونی، مفاهیم رو در عمل و روی پروژههای ملموس پیاده میکنی.
پوشش کامل، از ایمیج تا کلاستر
همهچیز یکجا: ایمیج و کانتینر، والیوم، نتورکینگ، Docker Compose، پروژههای چندکانتینری، استقرار و کلاستر Kubernetes. لازم نیست دنبال چند منبع پراکنده بگردی.
مهارتی که بازار کار میخواد
Docker و Kubernetes جزو پرتقاضاترین مهارتهای امروز دنیای فناوری هستن. یادگیریشون مستقیماً روی رزومه و فرصتهای شغلیات اثر میذاره.
مستقل از زبان برنامهنویسی
دموها با Node.js، Python و PHP هستن، ولی مفاهیم Docker مستقل از زبانه. حتی اگه این زبانها رو بلد نباشی، میتونی دوره رو کامل دنبال کنی.
خداحافظی با «رو سیستم من که کار میکرد»
با Docker، پروژههات همهجا بهشکل قابلپیشبینی و یکسان اجرا میشن — چه توی توسعهی محلی، چه در تیم، و چه در محیط پروداکشن.
خروجی نهایی / دستاوردها
بعد از این دوره میتونی:
- Docker رو روی هر سیستمی (مک، ویندوز، لینوکس) نصب و استفاده کنی.
- ایمیجهای سفارشی بسازی و کانتینرها رو حرفهای مدیریت کنی.
- دادهها رو با والیومها بهدرستی ماندگار کنی.
- نتورکینگ کانتینرها رو، هم با بیرون و هم بین چند کانتینر، پیادهسازی کنی.
- با Docker Compose پروژههای چندکانتینری بسازی و اجرا کنی.
- اپلیکیشنهات رو بهصورت دستی، با سرویسهای مدیریتشده یا با Kubernetes دیپلوی کنی.
- با مفاهیم و ساختار کلاستر Kubernetes کار کنی.
جمعبندی و CTA
Docker و Kubernetes دیگه یه مهارت لاکچری نیستن؛ به یه استاندارد در توسعه و استقرار نرمافزار مدرن تبدیل شدن. هرچی زودتر یادشون بگیری، یه قدم جلوتری. همین حالا شروع کن و از پایه تا استقرار واقعی، مسلط شو.
[ همین حالا در دوره ثبتنام کن و مسیر DevOps مدرن رو شروع کن ]
سرفصل های دوره
به دوره خوش آمدید
داکر چیست
چرا داکر و کانتینرها
ماشینهای مجازی در مقابل کانتینرهای داکر
راهاندازی داکر - مروری کلی
راهاندازی Docker - macOS
راهاندازی داکر - ویندوز
راهاندازی داکر - Docker Toolbox برای سیستمهای قدیمی
مروری بر ابزارهای داکر
نصب و پیکربندی IDE
دست به کار شویم!
طرح درس
چگونه بیشترین بهره را از این دوره ببریم
معرفی ماژول
تصاویر و کانتینرها: چیستند و چرا؟
استفاده و اجرای ایمیجهای از پیش ساخته شده خارجی
هدف ما یک اپلیکیشن NodeJS
ساخت ایمیج خودمان با Dockerfile
اجرای یک کانتینر بر اساس ایمیج خودمان
تصاویر فقط خواندنی هستند!
درک لایههای تصویر
خلاصهای اولیه
مدیریت تصاویر و کانتینرها
توقف و راهاندازی مجدد کانتینرها
درک کانتینرهای متصل و جدا شده
ورود به حالت تعاملی
حذف تصاویر و کانتینرها
حذف خودکار کانتینرهای متوقف شده
نگاهی به پشت صحنه بررسی تصاویر
کپی کردن فایلها به داخل و خارج کانتینر
نامگذاری و برچسبگذاری کانتینرها و ایمیجها
اشتراکگذاری تصاویر - نمای کلی
ارسال تصاویر به DockerHub
کشیدن و استفاده از تصاویر اشتراکی
Module Summary
معرفی ماژول
درک دستهبندی دادهها انواع مختلف دادهها
تجزیه و تحلیل یک اپلیکیشن واقعی
ساخت و درک اپلیکیشن دموی ما
درک مسئله
معرفی Volume ها
اولین تلاش ناموفق
احجام نامگذاری شده به کمک میآیند!
شروع کار با Bind Mounts (اشتراکگذاری کد)
ترکیب و ادغام پارتیشنهای مختلف
تنظیمات مخصوص NodeJS با استفاده از Nodemon در کانتینر
خلاصه حجمها و Bind Mount ها
نگاهی به Volume های فقط خواندنی
مدیریت Docker Volumes
استفاده از COPY در مقابل Bind Mounts
از فایلهای dockerignore برای کپی کردن همه چیز استفاده نکنید
کار با متغیرهای محیطی و فایلهای .env
استفاده از آرگومانهای بیلد (ARG)
Module Summary
معرفی ماژول
مورد ۱: ارتباط کانتینر با WWW
مورد ۲: ارتباط کانتینر با ماشین میزبان محلی
مورد ۳: ارتباط کانتینر به کانتینر
تجزیه و تحلیل اپلیکیشن دمو
ساختن یک کانتینر و ارتباط با وب (WWW)
برقراری ارتباط بین کانتینرها
ارتباط کانتینر به کانتینر: یک راه حل پایه
معرفی شبکههای داکر: ارتباط روان کانتینر به کانتینر
داکر چگونه آدرسهای IP را حل میکند
Module Summary
معرفی ماژول
اپلیکیشن هدف و تنظیمات ما
داکرایز کردن سرویس MongoDB
داکر کردن اپلیکیشن Node
انتقال SPA ریاکت به یک کانتینر
اضافه کردن شبکههای داکر برای ارتباط کارآمد بین کانتینرها
افزودن ماندگاری داده به MongoDB با استفاده از Volume ها
والیومها، باند مانتها و پولیش برای کانتینر NodeJS
بهروزرسانی زنده کد منبع برای کانتینر React (با Bind Mounts)
خلاصه ماژول
معرفی ماژول
داکر-کامپوز چیست و چرا؟
ایجاد یک فایل Compose
غواصی در پیکربندی فایل Compose
بالا و پایین کردن Docker Compose
کار با چندین کانتینر
اضافه کردن یک کانتینر دیگر
ساختن ایمیجها و درک نام کانتینرها
Module Summary
مقدمه ماژول و کانتینرهای کاربردی چیستند
کانتینرهای کمکی چرا باید از آنها استفاده کنید
روشهای مختلف اجرای دستورات در کانتینرها
ساخت اولین کانتینر کاربردی
استفاده از ENTRYPOINT
استفاده از داکر کامپوز
خلاصه ماژول
معرفی ماژول
تنظیمات هدف
اضافه کردن یک کانتینر Nginx (وب سرور)
اضافه کردن یک کانتینر PHP
اضافه کردن یک کانتینر MySQL
افزودن یک کانتینر ابزار Composer
ساخت اپلیکیشن لاراول با استفاده از کانتینر کامپوزر
راهاندازی فقط برخی سرویسهای Docker Compose
اضافه کردن کانتینرهای کاربردی بیشتر
داکر کامپوز با و بدون داکر فایل
Bind Mounts و COPY: چه زمانی از کدام استفاده کنیم
معرفی ماژول
از توسعه تا تولید
فرآیند استقرار و ارائهدهندگان
شروع با یک مثال
Bind Mounts در محیط پروداکشن
معرفی AWS و EC2
اتصال به یک نمونه EC2
نصب داکر روی ماشین مجازی
ایمیج محلی خود را به کلود پوش میکنیم
اجرای برنامه و انتشار آن (روی EC2)
مدیریت و بهروزرسانی ایمیج کانتینر
معایب رویکرد فعلی ما
از استقرار دستی تا سرویسهای مدیریتشده
استقرار با سرویس کانتینر داکر مدیریت شده AWS ECS
بیشتر در مورد AWS
بهروزرسانی کانتینرهای مدیریتشده
آمادهسازی یک اپلیکیشن چندکانتینری
پیکربندی کانتینر NodeJS Backend
استقرار کانتینر دوم و یک Load Balancer
استفاده از Load Balancer برای دامنه پایدار
استفاده از EFS Volumes با ECS
معماری فعلی ما
پایگاههای داده و کانتینرها: ملاحظهای مهم
انتقال به MongoDB Atlas
استفاده از MongoDB Atlas در محیط پروداکشن
معماری بهروز شده و هدف ما
درک یک مشکل رایج
ساخت یک کانتینر فقط برای بیلد
معرفی ساخت چند مرحلهای
ساخت یک تصویر چند مرحلهای
استقرار یک اپلیکیشن فرانتاند مستقل
تفاوتهای محیط توسعه و محیط عملیاتی
درک اهداف ساخت چند مرحلهای
فراتر از AWS
Module Summary
معرفی ماژول
تصاویر و کانتینرها
دستورات کلیدی
دادهها، حجمها و شبکهسازی
داکر کامپوز
محلی در مقابل ریموت
استقرار
معرفی ماژول
مشکلات بیشتر با استقرار دستی
چرا کوبرنتیز
کوبرنتیس دقیقاً چیست
معماری و مفاهیم اصلی کوبرنتیز
کوبرنتیز زیرساخت شما را مدیریت نخواهد کرد!
نگاهی دقیقتر به نودهای کارگر
نگاهی دقیقتر به نود اصلی
اصطلاحات و مفاهیم مهم
معرفی ماژول
کوبرنتیس زیرساخت شما را مدیریت نمیکند
مراحل راهاندازی و نصب مورد نیاز کوبرنتیز
تنظیمات macOS
نصب ویندوز
درک اشیاء (منابع) کوبرنتیز
شیء استقرار (منبع)
اولین استقرار - با استفاده از رویکرد دستوری
کوبرنتیز از پشت صحنه
شیء سرویس (منبع)
نمایش یک Deployment با یک Service
راهاندازی مجدد کانتینرها
مقیاسپذیری در عمل
بهروزرسانی استقرارها
بازگشت به عقب و تاریخچه استقرار
رویکرد دستوری در برابر رویکرد اظهاری
ایجاد فایل پیکربندی استقرار (رویکرد اعلانی)
اضافه کردن مشخصات Pod و Container
کار با برچسبها و انتخابگرها
ایجاد یک سرویس به صورت اعلانی
بهروزرسانی و حذف منابع
فایلهای پیکربندی متعدد در مقابل تک فایل
جزئیات بیشتر درباره برچسبها و انتخابگرها
پروبهای زنده بودن
نگاهی دقیقتر به گزینههای پیکربندی
Summary
معرفی ماژول
شروع پروژه و آنچه از قبل میدانیم
کوبرنتیز و والیومها - فراتر از والیومهای داکر
تئوری Volume ها در کوبرنتیز و مقایسه با داکر
ایجاد یک استقرار و سرویس جدید
شروع کار با Kubernetes Volumes
اولین جلد: نوع emptyDir
جلد دوم نوع hostPath
درک نوع Volume در CSI
از Volumeها به Persistent Volumeها
تعریف یک Persistent Volume
ساخت یک درخواست حجم پایدار
استفاده از یک ادعا در یک پاد
حجمها در مقابل حجمهای پایدار
استفاده از متغیرهای محیطی
متغیرهای محیطی و ConfigMapها
Module Summary
معرفی ماژول
شروع پروژه و هدف ما
ایجاد اولین استقرار
نگاهی دیگر به سرویسها
چندین کانتینر در یک پاد
ارتباط داخلی پاد
ایجاد چندین استقرار
ارتباط پاد به پاد با آدرسهای IP و متغیرهای محیطی
استفاده از DNS برای ارتباط Pod به Pod
کدام رویکرد بهترین است و یک چالش!
راه حل چالش
اضافه کردن یک فرانتاند کانتینری
استقرار فرانتاند با کوبرنتیز
استفاده از پروکسی معکوس برای فرانتاند
Module Summary
معرفی ماژول
گزینههای استقرار و مراحل
AWS EKS در مقابل AWS ECS
آمادهسازی پروژه اولیه
شیرجه در AWS
ساخت و پیکربندی کلاستر کوبرنتیز با EKS
اضافه کردن Worker Node ها
اعمال تنظیمات کوبرنتیز ما
شروع کار با Volume ها
اضافه کردن EFS به عنوان یک Volume (با نوع Volume سیاسآی)
ایجاد یک Persistent Volume برای EFS
استفاده از EFS Volume
یک چالش!
راه حل چالش
خیلی چیزها یاد گرفتی!
موضوعات مرتبطی که میتوانید بررسی کنید
مراحل بعدی!
خلاصه دوره
پیشنیاز های دوره چه چیزهایی هستند؟
- آشنایی پایه با خط فرمان (Terminal/CLI) و مفاهیم اولیهی توسعهی وب کمککنندهست. آشنایی با یکی از زبانها مثل Node.js، Python یا PHP خوبه ولی الزامی نیست
نظرات دانشجویان
مدرس دوره
کدیاد پلاس (Codeyad Plus)
سوالات متداول
نه، هیچ پیشنیازی لازم نیست. دوره از بنیادیترین سوال («کانتینر چیه؟») شروع میکنه و قدمبهقدم تا مفاهیم پیشرفته پیش میره.
نه. دموهای دوره با این زبانها هستن، ولی مفاهیم Docker مستقل از زبان برنامهنویسیه. حتی اگه این زبانها رو بلد نباشی، میتونی دوره رو کامل دنبال کنی.
Docker کدت رو توی «کانتینر» بستهبندی میکنه تا هرجا اجراش کنی، یکسان و قابلپیشبینی کار کنه. این یعنی پایان دعوای همیشگی «رو سیستم من که کار میکرد» و راهاندازی راحتتر پروژهها در تیم و پروداکشن.
هر سهتا — مک، ویندوز و لینوکس. دوره نصب و راهاندازی Docker رو روی همهی این سیستمعاملها آموزش میده.
بخشی از دموهای استقرار از AWS استفاده میکنن که برای ثبتنامش به کارت اعتباری نیاز داری. البته میتونی این بخش رو بهصورت غیرفعال (فقط با تماشا) هم دنبال کنی و بقیهی دوره کاملاً مستقل ازش قابل استفادهست.
هر دو، بهصورت کامل. از مفاهیم پایهی Docker شروع میکنی و تا استقرار با Kubernetes و کار با کلاستر پیش میری.
Docker و Kubernetes جزو پرتقاضاترین مهارتهای امروز دنیای فناوری و DevOps هستن. تسلط روی اینها میتونه مستقیماً روی فرصتهای شغلی و رزومهات اثر بذاره.
هر دو، با تمرکز جدی روی عمل. تئوری لازم توضیح داده میشه، ولی همهچیز با دهها دمو و پروژهی واقعی همراهه تا مفاهیم رو در عمل یاد بگیری.