هفته ۵ | Docker و کانتینرها
تا این مرحله از دوره، با سیستمعامل Linux، مفاهیم شبکه و اصول پایهای Automation آشنا شدید. برنامهها و اسکریپتهایی نوشتید که مستقیماً روی سرور یا ماشین مجازی اجرا میشدند. اما یکی از بزرگترین چالشهای همیشگی تیمهای نرمافزاری و DevOps این جمله است: «روی سیستم من کار میکرد، چرا روی سرور کار نمیکند؟»
دلیل این مشکل، تفاوت در محیطهای اجرا (نسخههای مختلف سیستمعامل، پکیجها، کتابخانهها و تنظیمات سیستم) است. فناوری کانتینرسازی (Containerization) و ابزار پیشتاز آن یعنی Docker، این معضل را تا حد زیادی برطرف کردند. در این هفته یاد میگیرید که کانتینرها چطور برنامهها و همهی وابستگیهای آنها را در یک بستهی ایزوله و یکدست بستهبندی میکنند تا در هر محیطی به شیوهای قابل پیشبینی اجرا شوند.
اهداف این هفته:
- مبانی کانتینرها و معماری Docker — مقایسهی کانتینر با ماشین مجازی و درک معماری dockerd ،containerd و runc
- کانتینرها از صفر با ابزارهای لینوکس (اختیاری) — بررسی عمیق و مفهومی پایههای کانتینر (Namespaces و Cgroups)
- نصب Docker، پیکربندی Mirror و Proxy — نصب استاندارد موتور Docker و تنظیمات حیاتی عبور از محدودیتها و تحریمها
- دستورهای پایهای و چرخهی حیات کانتینرها — کار با Docker CLI، اجرای کانتینرها، مدیریت وضعیت و اشکالزدایی
- مدیریت دادهها و Volumeها در Docker — نگهداری ماندگار دادهها با Named Volumeها و Bind Mountها
- شبکه در Docker و ارتباط کانتینرها — ایجاد شبکههای ایزوله، انتشار پورتها و کشف خودکار سرویسها با DNS داخلی
- ساخت Image با Dockerfile و بهینهسازی لایهها — ساخت ایمیج اختصاصی، درک مکانیزم Caching لایهها و Multi-stage Builds
- کار با Registryها (Docker Hub و GHCR) — درک سازوکار رجیستریها، دریافت و اجرای ایمیج از منابع مختلف و اصول تگگذاری
- مدیریت سرویسهای چندکانتینری با Docker Compose — تعریف یکپارچه و Declarative کل سیستم با
compose.yaml
پس از مطالعهی درسها، تمرین هفته را انجام دهید و نتیجه را در GitHub ثبت کنید.