Docker کیا ہے؟ غیر ڈیولپرز کے لیے Containers کی وضاحت
Docker ایک ایسا ٹول ہے جو ایپ کو اس کی ہر ضرورت کے ساتھ، یعنی زبان کا درست ورژن، لائبریریاں، سسٹم ٹولز اور ترتیبات، ایک معیاری اکائی میں پیک کرتا ہے جسے container کہتے ہیں۔ Container ڈیولپر کے لیپ ٹاپ، ٹیسٹ سرور یا کلاؤڈ ہوسٹ پر ایک ہی طرح چلتا ہے، جس سے کلاسک مسئلہ “لیکن یہ تو میری مشین پر چل رہا تھا” ختم ہو جاتا ہے۔ container بنانے کی ترکیب ایک مختصر ٹیکسٹ فائل میں لکھی جاتی ہے جسے Dockerfile کہتے ہیں۔
AI سے بنانے میں Docker کیوں اہم ہے
اگر آپ کی ایپ کا بیک اینڈ ہے، یعنی Python، Node، C# یا Java میں ایک API، تو اسے ایسی جگہ چلنا ہوگا جہاں بالکل درست سافٹ ویئر انسٹال ہو۔ Docker اسے قابلِ دہرائی بنانے کا سب سے عام طریقہ ہے۔
- بیک اینڈ deploy کرنا۔ بہت سے ہوسٹس، بشمول Mythex، containers کو Dockerfile سے بنا کر بیک اینڈ deploy کرتے ہیں۔ Mythex میں “C# Web API” یا “Java بیک اینڈ” مانگنے پر آپ کو ایپ کے ساتھ ایک Dockerfile ملتا ہے، اور Publish image بنا کر deploy کرتا ہے (API backends)۔
- پلیٹ فارم چھوڑنا۔ اگر آپ AI سے بنی ایپ برآمد کریں تو Dockerfile اسے کسی دوسرے ہوسٹ پر چلانا بہت آسان بناتا ہے۔ دیکھیں AI سے بنی ایپ کو برآمد کر کے خود میزبانی کیسے کریں۔
- ڈیولپرز کے ساتھ کام کرنا۔ آپ کے پروجیکٹ میں شامل ہونے والا ڈیولپر ایک یا دو کمانڈز سے پوری ایپ شروع کر سکتا ہے، بجائے اس کے کہ ایک دن چیزیں انسٹال کرنے میں لگائے۔
روزمرہ کی ایک مثال: سمندری کنٹینرز
معیاری شپنگ کنٹینرز سے پہلے کارگو ٹکڑوں میں لادا جاتا تھا، بوریاں، بیرل، کریٹس، اور ہر بندرگاہ اسے مختلف طریقے سے سنبھالتی تھی۔ معیاری اسٹیل کنٹینر نے یہ بدل دیا: ایک بار پیک کریں، اور کوئی بھی جہاز، کرین، ٹرین یا ٹرک اسے منتقل کر سکتا ہے، اندر کیا ہے اس کی پرواہ کیے بغیر۔
Docker سافٹ ویئر کے لیے یہی کرتا ہے:
- Dockerfile پیکنگ لسٹ اور ہدایات ہے۔
- Image سیل شدہ، پیک کیا ہوا کنٹینر ہے۔
- چلتا ہوا container وہ ڈبہ ہے جو جہاز پر کام کرنے لگے، یہاں، ایک سرور پر۔
- Docker Engine کرین اور جہاز ہے: سرور پر موجود سافٹ ویئر جو کوئی بھی container چلانا جانتا ہے۔
Docker کیسے کام کرتا ہے
| جزو | یہ کیا ہے |
|---|---|
| Dockerfile | ایک ٹیکسٹ فائل جس میں image بنانے کی قدم بہ قدم ہدایات ہیں۔ |
| Image | ایک صرف پڑھنے کے قابل پیکج: آپریٹنگ سسٹم کی بنیاد، رن ٹائم، لائبریریاں اور آپ کا کوڈ۔ |
| Container | ایک image کا چلتا ہوا نمونہ، دوسری ایپس سے الگ کیا ہوا۔ |
| Registry | images محفوظ اور شیئر کرنے کی جگہ، جیسے Docker Hub یا کلاؤڈ فراہم کنندہ کی registry۔ |
| Docker Engine | پس منظر کی وہ سروس جو images بناتی ہے اور containers چلاتی ہے۔ مفت اور اوپن سورس۔ |
| Docker Desktop | Mac، Windows اور Linux کے لیے ایک ایپ جو engine کو گرافیکل انٹرفیس کے ساتھ جوڑتی ہے۔ |
Containers بمقابلہ virtual machines: virtual machine ایک الگ مکمل کمپیوٹر ہونے کا ڈھونگ کرتی ہے جس کا اپنا آپریٹنگ سسٹم ہو، اس لیے وہ بھاری ہوتی ہے اور شروع ہونے میں سست۔ Container میزبان کے kernel کو شیئر کرتا ہے اور صرف ایپ اور اس کی فائلوں کو الگ رکھتا ہے، اس لیے وہ عموماً سیکنڈوں میں شروع ہوتا ہے اور بہت کم memory لیتا ہے۔ ایک ہی سرور پر بہت سے containers ساتھ ساتھ چل سکتے ہیں۔
ایک عملی مثال: ایک چھوٹا Python API
فرض کریں آپ کے AI بلڈر نے ایک بکنگ ایپ کے لیے Python FastAPI بیک اینڈ بنایا ہے۔ Dockerfile کچھ یوں ہو سکتی ہے:
FROM python:3.12-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
EXPOSE 8000
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
لائن بہ لائن:
| لائن | یہ کیا کرتی ہے |
|---|---|
FROM python:3.12-slim | ایک سرکاری image سے شروع کرنا جس میں Python 3.12 پہلے سے انسٹال ہو۔ |
WORKDIR /app | container کے اندر /app فولڈر میں کام کرنا۔ |
COPY requirements.txt . اور RUN pip install ... | لائبریریوں کی فہرست کاپی کرنا اور انہیں انسٹال کرنا۔ |
COPY . . | ایپ کا اپنا کوڈ کاپی کرنا۔ |
EXPOSE 8000 | یہ نوٹ کرنا کہ ایپ پورٹ 8000 پر سنتی ہے۔ |
CMD [...] | وہ کمانڈ جو container چلنے پر ویب سرور شروع کرتی ہے۔ |
سادہ الفاظ میں: “Python 3.12 سے شروع کرو۔ requirements.txt میں درج لائبریریاں انسٹال کرو۔ کوڈ کاپی کرو۔ پورٹ 8000 پر ویب سرور شروع کرو۔”
پھر ایک ڈیولپر (یا ہوسٹنگ پلیٹ فارم) دو کمانڈز چلاتا ہے:
docker build -t booking-api .
docker run -p 8000:8000 booking-api
پہلی کمانڈ image بناتی ہے اور اسے booking-api نام دیتی ہے۔ دوسری ایک container شروع کرتی ہے اور مشین کے پورٹ 8000 کو container کے اندر پورٹ 8000 سے جوڑتی ہے۔ API اب چل رہا ہے، اسی طرح جیسے وہ ہر اس سرور پر چلے گا جہاں Docker ہو۔
دھیان دیں کہ image میں کیا نہیں ہے: پاس ورڈز اور API keys۔ وہ container شروع ہوتے وقت environment variables کے طور پر دیے جاتے ہیں، تاکہ وہی image مختلف ترتیبات کے ساتھ ٹیسٹنگ اور پروڈکشن دونوں میں چل سکے۔
اہم اصطلاحات
| اصطلاح | مطلب |
|---|---|
| Container | ایپ اور اس کی dependencies کا الگ تھلگ، چلتا ہوا پیکج۔ |
| Image | وہ سانچہ جس سے container شروع ہوتا ہے۔ |
| Base image | Dockerfile کی FROM لائن میں شروعاتی نقطہ، جیسے python:3.12-slim یا node:22۔ |
| Layer | Dockerfile کا ہر قدم ایک کیش شدہ layer شامل کرتا ہے، جس سے دوبارہ build تیز ہوتا ہے۔ |
| Port mapping | میزبان کے ایک پورٹ کو container کے اندر کے پورٹ سے جوڑنا۔ |
| Volume | ایسا ذخیرہ جو container بدلنے کے بعد بھی باقی رہے۔ Containers خود عارضی ہوتے ہیں۔ |
| Docker Compose | ایک فائل جو کئی containers کی وضاحت کرتی ہے جو ساتھ چلتے ہیں، جیسے API اور ڈیٹابیس۔ |
| Kubernetes | کئی سرورز پر بہت سے containers چلانے کا نظام۔ زیادہ تر چھوٹی ایپس کو اس کی ضرورت نہیں ہوتی۔ |
عام غلط فہمیاں
- “Docker ایک virtual machine ہے۔” یہ ہلکا ہے: containers میزبان کا kernel شیئر کرتے ہیں۔
- “container کے اندر محفوظ ڈیٹا محفوظ ہے۔” containers کو ضائع کر کے بدلنے کے لیے بنایا گیا ہے۔ جو چیز باقی رہنی چاہیے، جیسے صارف کا ڈیٹا یا uploads، وہ ڈیٹابیس، فائل اسٹوریج یا volume میں ہونی چاہیے۔
- “Dockerfile میں secrets رکھنا ٹھیک ہے کیونکہ وہ نجی ہے۔” Images شیئر اور registries پر push ہوتی ہیں۔ Secrets رن ٹائم پر دیں۔
- “Docker سے ایپ خودبخود محفوظ ہو جاتی ہے۔” علیحدگی مدد کرتی ہے، مگر پرانے سافٹ ویئر اور کمزور ترتیبات والا container اب بھی کمزور ہے۔
- “ہر ایپ کو Docker چاہیے۔” ایک سادہ static سائٹ یا سادہ فرنٹ اینڈ عموماً عام فائلوں کے طور پر ہوسٹ ہوتی ہے، بغیر کسی container کے۔
- “Docker Desktop سب کے لیے مفت ہے۔” engine مفت ہے؛ بڑی کمپنیوں کے لیے Docker Desktop کی شرائط کے مطابق ادا شدہ سبسکرپشن درکار ہے۔
اپنے AI بلڈر سے کیا پوچھیں
- “کیا اس ایپ کو Dockerfile چاہیے؟ اگر ہاں تو اس کی ہر لائن سادہ زبان میں سمجھاؤ۔”
- “ایک چھوٹی، سرکاری base image استعمال کرو اور زبان کا ورژن پن کرو۔”
- “secrets کو image سے باہر رکھو۔ انہیں رن ٹائم پر environment variables سے پڑھو۔”
- “یقینی بناؤ کہ uploads اور ڈیٹا ڈیٹابیس یا فائل اسٹوریج میں ہوں، container کے اندر نہیں۔”
- “ایک Docker Compose فائل شامل کرو تاکہ ایک ڈیولپر فرنٹ اینڈ، API اور ڈیٹابیس کو ایک کمانڈ سے مقامی طور پر چلا سکے۔”
- “ایک health-check endpoint شامل کرو تاکہ ہوسٹ بتا سکے کہ API چل رہا ہے یا نہیں۔”
Mythex میں Docker
Mythex استعمال کرنے کے لیے آپ کو Docker انسٹال یا چلانے کی ضرورت نہیں۔ آپ کا پروجیکٹ ایک نجی کلاؤڈ sandbox میں چلتا ہے، اور جب آپ ایسا بیک اینڈ مانگتے ہیں جس کے لیے container درکار ہو، مثلاً C#، Java یا کوئی اپنا Node یا Python سروس، تو Mythex ایپ کے ساتھ ایک Dockerfile لکھتا ہے، sandbox میں پریویو دکھاتا ہے، اور publish کرنے پر deploy کرتا ہے، بغیر کسی ہوسٹنگ کے سیٹ اپ کے (ٹیکنالوجی کیسے منتخب ہوتی ہے)۔ Pro پر آپ پروجیکٹ برآمد کر سکتے ہیں یا GitHub سے sync کر سکتے ہیں اور Dockerfile ساتھ لے جا سکتے ہیں۔ بیک اینڈ اور فرنٹ اینڈ ایک ساتھ کیسے جڑتے ہیں، اس کے لیے فرنٹ اینڈ بمقابلہ بیک اینڈ دیکھیں۔
سوالات
سادہ الفاظ میں Docker کیا ہے؟
Docker ایک ایسا ٹول ہے جو ایپ کو اس کی ہر ضرورت کے ساتھ، یعنی رن ٹائم، لائبریریاں اور ترتیبات، ایک معیاری اکائی میں پیک کرتا ہے جسے container کہتے ہیں۔ یہ container لیپ ٹاپ، ٹیسٹ سرور یا کلاؤڈ ہوسٹ پر ایک ہی طرح چلتا ہے۔
Docker image اور container میں کیا فرق ہے؟
Image پیک شدہ، صرف پڑھنے کے قابل سانچہ ہے: ایپ اور اس کی dependencies، جو ایک Dockerfile سے بنتی ہیں۔ Container اس image کی چلتی ہوئی نقل ہے۔ ایک image سے آپ کئی containers شروع کر سکتے ہیں۔
کیا Docker ایک virtual machine ہے؟
نہیں۔ virtual machine پورے کمپیوٹر کی نقل کرتی ہے جس کا اپنا آپریٹنگ سسٹم ہوتا ہے۔ Containers میزبان مشین کا آپریٹنگ سسٹم kernel شیئر کرتے ہیں اور صرف ایپ کو الگ رکھتے ہیں، اس لیے وہ تیزی سے شروع ہوتے ہیں اور کم memory لیتے ہیں۔
کیا Docker مفت ہے؟
Docker Engine، وہ بنیادی حصہ جو containers چلاتا ہے، مفت اور اوپن سورس ہے۔ Docker کی شرائط کے مطابق، ستمبر 2026 تک Docker Desktop غیر تجارتی اوپن سورس پروجیکٹس اور ان کمپنیوں کے لیے مفت ہے جن کے 250 سے کم ملازمین اور سالانہ آمدنی 10 ملین ڈالر سے کم ہے؛ بڑی کمپنیوں کو ادا شدہ سبسکرپشن درکار ہے۔
کیا AI سے ایپ بنانے کے لیے Docker سیکھنا ضروری ہے؟
عموماً نہیں۔ بہت سے AI بلڈرز containers آپ کے لیے سنبھال لیتے ہیں۔ یہ جاننا مفید ہے کہ Dockerfile کیا ہے، تاکہ آپ سمجھیں کہ بیک اینڈ کیسے پیک ہوتا ہے، اور اگر آپ ایپ کو برآمد کریں تو اسے کہیں اور چلا سکیں۔