تخطَّ إلى المحتوى
أساسيات قراءة دقيقتان

دوكر ببساطة، ولماذا نحتاجه أصلًا

شرح مختصر لدوكر لمن يسمع الاسم كثيرًا ولم يفهم بعد أي مشكلة يحل، بمثال يمر به كل مبرمج مرة على الأقل.

عمر جتين مطور واجهات أمامية

دوكر أداة تجمع برنامجك داخل حاويات معزولة ليعمل في أي بيئة دون مشاكل. وهذا التعريف لا يعني شيئًا لمن لم يواجه المشكلة بعد، فلنبدأ من المشكلة.

تخيل أنك بنيت برنامجًا يتكون من واجهة وخادم وقاعدة بيانات، وأنهيته وتأكدت أنه يعمل على حاسوبك. أرسلته إلى صديقك فلم يعمل، لأن إصدار Node عنده يختلف عن الإصدار الذي يستخدمه برنامجك. ثم أردت رفعه على خادم حقيقي فواجهت المشكلة نفسها. المشروع يعمل على جهازك، وكلما حاولت تشغيله في مكان آخر ظهرت مشكلة جديدة.

وهذا ما يحله دوكر بالضبط: يأخذ برنامجك ويضعه في بيئة معزولة فيها كل ما يحتاج إليه ليعمل: إصدار Node الصحيح، وإصدار قاعدة البيانات الصحيح، والمكتبات. فيعمل بالطريقة نفسها في كل مكان ترفعه إليه.

  • Dockerfile: الملف الذي تكتب فيه التعليمات، ليعرف دوكر كيف يشغّل برنامجك، وما الإصدارات والمكتبات التي يستخدمها.

  • Image: نسخة مجمّدة من برنامجك، تنشأ حين تبني الـ Dockerfile.

  • Container: النسخة التي تعمل فعلًا. الحاويات سريعة وخفيفة ومعزولة على مستوى التطبيق.

Dockerfile DOCKERFILE
FROM oven/bun:1​WORKDIR /app​# الاعتماديات في طبقة منفصلة، حتى لا تُعاد# مع كل تعديل بسيط في الكودCOPY package.json bun.lock ./RUN bun install --frozen-lockfile​COPY . .RUN bun run build​EXPOSE 3000CMD ["bun", "run", "start"]

العزل في دوكر على مستوى التطبيق: يعزل الملفات التي يحتاج إليها برنامجك، لكنه يظل يستخدم نظام الخادم الأساسي نفسه ولا يبني نظامًا جديدًا في كل مرة. أما الآلة الافتراضية فعزلها على مستوى العتاد، وتحتاج إلى نظام وذاكرة ومساحة خاصة بها.

DockerVirtual Machine
مستوى العزلالتطبيقالعتاد
نظام التشغيليشارك نظام الجهازنظام كامل لكل نسخة
وقت التشغيلثوانٍدقائق
الحجمميغابايتاتغيغابايتات

ولهذا يعتمد المبرمجون على دوكر في نشر برامجهم بدل الآلات الافتراضية.

الوسوم

  • Docker
  • النشر
  • أساسيات

اقرأ أيضًا