تکنولوژی نوین اینترنتی
Docker یک پلتفرم متنباز برای ایجاد، اجرا، و مدیریت کانتینرها (Containers) است. کانتینرها محیطهایی سبکوزن و ایزولهشده هستند که به توسعهدهندگان اجازه میدهند برنامههای خود را به همراه تمام وابستگیها (Dependencies) اجرا کنند، بدون اینکه نگران تفاوتهای بین سیستمها باشند.
بهجای اینکه یک ماشین مجازی کامل ایجاد بشه، Docker از Container Engine استفاده میکنه که منابع سیستم رو به اشتراک میگذاره اما محیط ایزوله برای برنامه فراهم میکنه.
ویژگی | Docker | Virtual Machine |
---|---|---|
سرعت راهاندازی | چند ثانیه | چند دقیقه |
حجم | سبک | سنگین |
مصرف منابع | کم | زیاد |
عملکرد | نزدیک به بومی | کمی کندتر |
ایزولهسازی | پروسهای | کامل (OS-level) |
🔁 قابلیت تکرار و انتقال آسان پروژهها
📦 پکیجکردن برنامه با تمام وابستگیها
⚙️ راهاندازی ساده محیط توسعه و تولید
🧪 اجرای تستها در محیط ایزوله
📤 استقرار سریع در سرویسهای ابری
🧼 کاهش مشکل "روی سیستم من کار میکنه!"
مفهوم | توضیح |
---|---|
Image | قالبی از برنامه + تنظیمات و وابستگیها |
Container | یک نسخه اجراشده از یک Image |
Dockerfile | فایلی برای ساخت Image دلخواه |
Docker Hub | مخزن آنلاین برای اشتراکگذاری Imageها |
Volume | فضای ذخیرهسازی پایدار برای دیتا |
Network | برقراری ارتباط بین کانتینرها |
دستور | توضیح |
---|---|
docker build -t my-app . | ساخت Image از Dockerfile |
docker run -p 3000:3000 my-app | اجرای کانتینر و نگاشت پورت |
docker ps | نمایش کانتینرهای فعال |
docker images | لیست تصاویر موجود |
docker stop <id> | توقف کانتینر فعال |
docker exec -it <id> bash | ورود به داخل کانتینر |
docker-compose up | اجرای چند کانتینر همزمان (با فایل Compose) |
Docker Compose ابزاری برای اجرای چند سرویس با هم است. با تعریف سرویسها در فایل docker-compose.yml
، مثلاً برای یک اپ Node.js + MongoDB:
app.py
requirements.txt
Dockerfile
سپس:
محیط توسعه یکسان بین تیمها
اجرای تستهای خودکار در CI/CD
میکروسرویسها
استقرار برنامه در Cloud (مانند AWS, Google Cloud, Heroku)
مجازیسازی سبک در IOT و Embedded Systems
استفاده از Imageهای رسمی یا اسکنشده
اجرای کانتینرها با کاربر غیر ریشه (non-root)
محدود کردن منابع کانتینر
بهروزرسانی مداوم Imageها و حذف کانتینرهای قدیمی
Docker انقلابی در توسعه و استقرار نرمافزارها ایجاد کرده. با استفاده از کانتینرها، میتوان برنامهها را در هر جایی با کمترین مشکل اجرا کرد. این ابزار هم برای توسعهدهندگان، هم تیمهای DevOps و هم مدیران سرور، ابزاری قدرتمند و کاربردی است.