آموزش داکر
آموزش جامع Docker از مفاهیم پایه تا اجرای پروژههای واقعی، ساخت و مدیریت کانتینرها، کار با Imageها، Docker Compose و پیادهسازی محیطهای توسعه و استقرار. داکر یکی از مهمترین ابزارهای دنیای توسعه نرمافزار و DevOps است که به توسعهدهندگان و تیمهای فنی کمک میکند برنامهها و وابستگیهای آنها را در محیطی استاندارد، قابل حمل و ایزوله اجرا کنند. در این دوره با مفاهیم Docker بهصورت اصولی آشنا میشوید و قدمبهقدم یاد میگیرید چگونه برنامههای خود را کانتینری کنید و محیطهای توسعه و اجرا را مدیریت کنید. بتدا با مفهوم Container، Image و معماری Docker آشنا میشوید و تفاوت کانتینر با ماشین مجازی را بررسی میکنید. سپس نحوه نصب و راهاندازی Docker، اجرای کانتینرها و مدیریت چرخه عمر آنها را یاد میگیرید.
سرفصل جلسات دوره
20 جلسهContainer چیست؟ تفاوت Container و Virtual Machine مزایای استفاده از Docker کاربرد Docker در توسعه، تست و Production آشنایی با DevOps و نقش Docker در آن معرفی اجزای اصلی Docker Docker Engine چیست؟ Docker CLI چیست؟ Docker Registry چیست؟ معماری Client-Server در Docker
نصب Docker روی Linux نصب Docker Desktop روی Windows نصب Docker Desktop روی macOS بررسی صحت نصب Docker آشنایی با Docker CLI اجرای اولین دستور Docker بررسی وضعیت Docker Engine تنظیمات اولیه Docker مدیریت دسترسی کاربران به Docker رفع خطاهای رایج هنگام نصب و اجرا
Container چیست و چگونه کار میکند؟ اجرای اولین Container دستور docker run مشاهده Containerهای در حال اجرا مشاهده تمام Containerها توقف Container اجرای مجدد Container Restart کردن Container حذف Container نامگذاری Containerها اجرای Container در حالت Detached اجرای دستورات داخل Container ورود به Shell یک Container مشاهده Logهای Container بررسی وضعیت و مشخصات Container مدیریت چرخه حیات Container
Image چیست؟ تفاوت Image و Container ساختار Docker Image آشنایی با Layerها دریافت Image از Docker Hub جستجوی Imageها مشاهده Imageهای موجود حذف Image Tag کردن Image بررسی تاریخچه Image مفهوم Repository و Tag Imageهای رسمی و غیررسمی انتخاب Image مناسب برای پروژه
Dockerfile چیست؟ چرا باید Image اختصاصی بسازیم؟ ساخت اولین Dockerfile دستور FROM دستور RUN دستور COPY دستور ADD دستور WORKDIR دستور CMD دستور ENTRYPOINT دستور EXPOSE دستور ENV دستور ARG دستور USER دستور VOLUME تفاوت CMD و ENTRYPOINT تفاوت COPY و ADD ساخت Image با Dockerfile اجرای Image ساختهشده مدیریت Layerهای Dockerfile
مفهوم Docker Build استفاده از Build Context .dockerignore کاهش حجم Image انتخاب Base Image مناسب استفاده از Alpine و Imageهای سبک کاهش تعداد Layerها Multi-Stage Build Build کردن پروژههای Frontend Build کردن پروژههای Backend بررسی امنیت Image بهینهسازی زمان Build Best Practiceهای Dockerfile
مشکل از بین رفتن اطلاعات Container مفهوم Persistent Data Volume چیست؟ ایجاد Volume اتصال Volume به Container مشاهده Volumeها حذف Volume Bind Mount چیست؟ تفاوت Volume و Bind Mount استفاده از Mount برای محیط Development نگهداری اطلاعات Database اشتراکگذاری فایلها بین Container و Host
Docker Network چیست؟ مفهوم Network Driver شبکه Bridge شبکه Host شبکه None ایجاد Network اختصاصی اتصال Containerها به یک Network ارتباط Containerها با یکدیگر DNS داخلی Docker دسترسی Container به اینترنت Port Mapping تفاوت EXPOSE و -p طراحی شبکه برای پروژههای چندسرویسی
Environment Variable چیست؟ استفاده از ENV ارسال متغیر با docker run مدیریت تنظیمات خارج از کد فایل .env استفاده از Environment Variable در Docker Compose مدیریت تنظیمات Development و Production نکات امنیتی مربوط به Environment Variableها مدیریت Secretها و اطلاعات حساس
Docker Compose چیست؟ چرا از Compose استفاده کنیم؟ ساخت فایل compose.yaml ساختار فایل Compose تعریف Service تعریف Image تعریف Build تعریف Port تعریف Volume تعریف Network تعریف Environment اجرای پروژه با Compose توقف سرویسها Restart سرویسها مشاهده Log سرویسها اجرای Command داخل سرویس مدیریت چند Container بهصورت همزمان
طراحی یک پروژه واقعی اجرای Backend در Docker اجرای Frontend در Docker اجرای Database در Docker اتصال Backend به Database اتصال Frontend به Backend ساخت Network اختصاصی ایجاد Volume برای Database مدیریت Environment Variableها اجرای کل پروژه با یک دستور مدیریت وابستگی بین سرویسها بررسی وضعیت سرویسها مدیریت Logهای پروژه
اجرای MySQL با Docker اجرای PostgreSQL با Docker اجرای MongoDB با Docker اتصال Application به Database Container ذخیره دائمی اطلاعات Database مدیریت Database با Volume ایجاد User و Database تنظیم Password و Environment Variable Backup و Restore اطلاعات مدیریت Migrationهای Database نکات مهم استفاده از Database در Production
Registry چیست؟ Docker Hub چیست؟ ساخت Repository Login به Docker Hub Tag کردن Image Push کردن Image Pull کردن Image مدیریت Versionهای Image Private و Public Repository استفاده از Registry اختصاصی آشنایی با GitHub Container Registry
مشاهده مصرف منابع بررسی CPU و RAM دستور docker stats بررسی Processهای داخل Container مدیریت Logها محدود کردن منابع Container Restart Policy Healthcheck بررسی وضعیت سرویس مدیریت Containerهای متوقفشده پاکسازی منابع بلااستفاده مدیریت Image، Container، Network و Volumeهای اضافی
اصول امنیت Container اجرای Container با کاربر غیر Root مدیریت Permissionها کاهش سطح دسترسی Container امنیت Docker Image آسیبپذیری Dependencyها اسکن Imageها مدیریت Secretها جلوگیری از قرار دادن Password داخل Dockerfile انتخاب Imageهای معتبر Best Practiceهای امنیتی Docker
ایجاد محیط Development با Docker یکسانسازی محیط توسعه تیم اجرای پروژه بدون نصب Dependency روی سیستم Hot Reload Bind Mount مدیریت Dependencyها اجرای Database با Docker اجرای Redis با Docker اجرای سرویسهای جانبی ساخت محیط Development قابل حمل
مفهوم CI/CD نقش Docker در Pipeline Build کردن Image در CI اجرای تست داخل Container Push خودکار Image Versioning Image Deploy کردن Image آشنایی با GitHub Actions استفاده از Docker در Pipeline ساخت Pipeline ساده برای پروژه واقعی
آمادهسازی Image برای Production تفاوت Development و Production مدیریت Configuration مدیریت Secretها Reverse Proxy اجرای Application روی Server اتصال Domain به Container HTTPS و SSL مدیریت Restart سرویسها بررسی Logها در Production Backup و مدیریت دادهه
Docker Build Cache Multi-Stage Build Healthcheck Resource Limitation Restart Policy Docker Context Docker Events Docker Inspect مدیریت پیچیدهتر Networkها مدیریت Containerهای چندسرویسی بهینهسازی Build و Deployment Troubleshooting پیشرفته
طراحی معماری پروژه Containerize کردن Backend Containerize کردن Frontend راهاندازی Database راهاندازی Redis ایجاد Dockerfileهای استاندارد ایجاد فایل Docker Compose طراحی Network ایجاد Volume مدیریت Environment Variableها Build کردن Imageها Push کردن Image به Registry اجرای پروژه روی Server تنظیم Reverse Proxy فعالسازی HTTPS بررسی Logها و Healthcheck بهینهسازی Imageها آمادهسازی پروژه برای Production