فصل 5

هفته ۵ | 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 ثبت کنید.