📦 همه چیز درمورد کانتینرها
کانتینرها مثل "جعبههای نرمافزاری" هستن که همه چیز رو برای اجرای یک برنامه (مثلاً یک وبسرور یا اپلیکیشن) آماده میکنن. برخلاف ماشینهای مجازی (VM) که کل سیستم عامل رو شبیهسازی میکنن، کانتینرها به جای بالا اوردن هسته جدا هسته اصلی رو با برنامه مون به اشتراک میزارن! این باعث میشه سبکتر، سریعتر و کممصرفتر باشن.
🔍 چطوری کار میکنن؟
🔸کانتینرها از دو فناوری کلیدی لینوکس استفاده میکنن:
1️⃣ Namespaces:
محیط اجرای برنامه رو از بقیه سیستم ایزوله میکنه (مثلاً فایل سیستم، شبکه و فرایندها جدا میشن).
2️⃣ Cgroups (Control Groups):
منابع سختافزاری (مثل CPU و RAM) رو بین کانتینرها محدود و مدیریت میکنه.
🚢 Docker چیکار میکنه این وسط؟ 🤔 Docker محبوبترین ابزار برای کار با کانتینرهاست. به راحتی میتونی یه اپلیکیشن رو با تمام وابستگیهاش (مثل کتابخانهها و تنظیمات) توی یه تصویر (Image) بستهبندی کنی و روی هر سیستم لینوکسی اجرا کنی.
مثال اجرای یک کانتینر اوبونتو:
docker run -it ubuntu:22.04 /bin/bash
چطور به Image سفارشی بسازیم؟
🔸 با Dockerfile میتونی Image خودت رو بسازی:
FROM python:3.9
سپس با دستور
docker build -t my-app .
ایمیج رو بساز
📚 LXC/LXD: کانتینرهای "شبه VM"
LXC (Linux Containers) کانتینرهایی میسازه که بیشتر شبیه یه سیستم عامل کاملن مثلاً میتونی یه کانتینر اوبونتو داشته باشی و تقریباً همه کارهایی که توی یه VM میکنی رو انجام بدی.
مثال ایجاد کانتینر با LXD:
lxc launch ubuntu:22.04 my-container # ساخت کانتینر
🌟 مزایای کانتینرها:
1️⃣ پورتابل: یه بار بساز، همه جا اجرا کن (حتی روی سرور)
2️⃣ سریع: راهاندازی کانتینر ها خیلی سریع انجام میشه
3️⃣ صرفهجویی در منابع: دهها کانتینر میتونی روی یک سرور اجرا کنی بدون نیاز به سختافزار اضافه.
4️⃣ اسکیل آسان: با ابزارهایی مثل Kubernete**s میتونی هزاران کانتینر رو مدیریت کنی.
⚠️ نکات امنیتی:
کانتینرها کاملاً ایزوله نیستن اگر تنظیمات اشتباه باشه، ممکنه به سیستم یا سرور آسیب بزنن.
همیشه:
1️⃣ از Imageهای رسمی و معتبر استفاده کن.
2️⃣ کانتینرها رو با کاربر غیر root اجرا کن.
3️⃣ به کانتینرها دسترسی بیش از حد نده (مثلاً --privileged در Docker خطرناکه).
🎯 کاربردهای کانتینرها:
توسعه نرمافزار (DevOps و CI/CD)
اجرای میکروسرویسها (مثل وبسرور، دیتابیس و ...)
تست نرمافزار در محیطهای مختلف
ساخت محیطهای توسعه یکسان برای کل تیم
🔧 شروع کار با Docker روی لینوکس:
1️⃣ بر اساس توزیعت Docker رو نصب کن و اگر خواستی استارت اپش رو فعال کن:
sudo apt install docker
2️⃣ یک Image آزمایشی دانلود کن (مثل Nginx):
docker pull nginx
3️⃣ کانتینر رو اجرا کن:
docker run -d -p 8080:80 --name my-nginx nginx
حالا تو مرورگر ادرس localhost:8080 رو بزن اگر صفحه پیشفرض Nginx رو دیدی یعنی درست اجرا شده!
جمع بندی ✍
فهمیدیم که کانتینر ها ابزاری برای ایزوله سازی برنامه هامون هستن که با استفاده از منابع کم و راه اندازی سریع خیلی کار هارو ساده میکنن و برای بکند کار و شبکه و حتی فرانت کار ها هم کاربرد دارن.
#️⃣ #linux #development
➖➖➖➖➖➖➖➖➖➖
🐧 CHANNEL | GROUP