دوكر ببساطة، ولماذا نحتاجه أصلًا
شرح مختصر لدوكر لمن يسمع الاسم كثيرًا ولم يفهم بعد أي مشكلة يحل، بمثال يمر به كل مبرمج مرة على الأقل.
دوكر أداة تجمع برنامجك داخل حاويات معزولة ليعمل في أي بيئة دون مشاكل. وهذا التعريف لا يعني شيئًا لمن لم يواجه المشكلة بعد، فلنبدأ من المشكلة.
تخيل أنك بنيت برنامجًا يتكون من واجهة وخادم وقاعدة بيانات، وأنهيته وتأكدت أنه يعمل على حاسوبك. أرسلته إلى صديقك فلم يعمل، لأن إصدار Node عنده يختلف عن الإصدار الذي يستخدمه برنامجك. ثم أردت رفعه على خادم حقيقي فواجهت المشكلة نفسها. المشروع يعمل على جهازك، وكلما حاولت تشغيله في مكان آخر ظهرت مشكلة جديدة.
وهذا ما يحله دوكر بالضبط: يأخذ برنامجك ويضعه في بيئة معزولة فيها كل ما يحتاج إليه ليعمل: إصدار Node الصحيح، وإصدار قاعدة البيانات الصحيح، والمكتبات. فيعمل بالطريقة نفسها في كل مكان ترفعه إليه.
Dockerfile: الملف الذي تكتب فيه التعليمات، ليعرف دوكر كيف يشغّل برنامجك، وما الإصدارات والمكتبات التي يستخدمها.
Image: نسخة مجمّدة من برنامجك، تنشأ حين تبني الـ Dockerfile.
Container: النسخة التي تعمل فعلًا. الحاويات سريعة وخفيفة ومعزولة على مستوى التطبيق.
FROM oven/bun:1WORKDIR /app# الاعتماديات في طبقة منفصلة، حتى لا تُعاد# مع كل تعديل بسيط في الكودCOPY package.json bun.lock ./RUN bun install --frozen-lockfileCOPY . .RUN bun run buildEXPOSE 3000CMD ["bun", "run", "start"] العزل في دوكر على مستوى التطبيق: يعزل الملفات التي يحتاج إليها برنامجك، لكنه يظل يستخدم نظام الخادم الأساسي نفسه ولا يبني نظامًا جديدًا في كل مرة. أما الآلة الافتراضية فعزلها على مستوى العتاد، وتحتاج إلى نظام وذاكرة ومساحة خاصة بها.
| Docker | Virtual Machine | |
|---|---|---|
| مستوى العزل | التطبيق | العتاد |
| نظام التشغيل | يشارك نظام الجهاز | نظام كامل لكل نسخة |
| وقت التشغيل | ثوانٍ | دقائق |
| الحجم | ميغابايتات | غيغابايتات |
ولهذا يعتمد المبرمجون على دوكر في نشر برامجهم بدل الآلات الافتراضية.
الوسوم
- Docker
- النشر
- أساسيات
اقرأ أيضًا
لا تخترع العجلة من جديد
أكثر ما يُهدر في مشاريعنا ليس وقت كتابة الكود، بل وقت إعادة اختراع أشياء استقر عليها الناس منذ سنين.
الغرور يقتل المشروع
أسوأ ما رأيته في هذا المجال ليس كودًا سيئًا، بل شخصًا لا يستطيع أن يقول إن عمل غيره جيد.
الواجهة التي تحتاج شرحًا واجهة فاشلة
ملاحظات من بناء واجهات لأشخاص لم يفتحوا لوحة تحكم في حياتهم، ولماذا امتلأ الإنترنت بواجهات تصرخ في وجهك.