What is Docker

Ibrahim el-otmani | Aug 18, 2025 min read

شنو هو Docker؟ شرح مبسط للمبتدئين

مرحبا بيك يلا كنتي devops engineer ولا sysadmin ولا غير مهتم بمجال المعلوميات، ضروري تكون سمعتي بكلمة Docker. فشنو هو بالضبط هاد Docker وعلاش داير هاد الضجة كلها؟ فهاد المقال، غانشرحو هادشي بطريقة ساهلة ومبسطة.


علاش جا Docker؟ المشكل ديال “خدامة عندي فالبيسي”

تخيل راسك صاوبتي واحد application بال Python مثلا. باش تخدمها، خاصك Python بواحد ال version معينة، وخاصك بزاف ديال المكتبات (libraries) محددة. صاوبتي كلشي وخدم ليك داكشي ناضي فالحاسوب ديالك.

ملي جيتي تعطي هاد ال application لشي صاحبك باش يجربها، ولا بغيتي تحطها فشي server باش تولي online، هنا كيبداو المشاكل: “آه معنديش نفس ال version ديال Python"، “ناقصاني واحد المكتبة”، “هادشي خدام ف Windows وماخدامش ف Linux”. هادي هي المشكلة المشهورة ديال “It works on my machine”.

هنا فين كايجي الدور ديال Docker.


شنو هو الحل لي كيقدمو Docker؟

Docker هو واحد المنصة (platform) لي كتخليك “تغلّف” ال application ديالك مع كاع داكشي لي كتحتاجو باش تخدم (بحال المكتبات، ال runtime, الأدوات…) فواحد الباكيج واحد معزول ومستقل، هاد الباكيج كيتسمى container.

الفكرة مستوحاة من حاويات الشحن البحرية. كيفما الحاوية تقدر تهز أي حاجة (سيارات، ملابس، أكل…) وكتسهال عملية النقل ديالها بأي باخرة أو شاحنة بلا ميهمهوم شنو كاين لداخل، حتى ال Docker container كيهز ال application ديالك وكتقدر تخدمو فأي بلاصة كتدعم Docker (البيسي ديالك، البيسي ديال صاحبك، server ف cloud…) بلا مشاكل ديال التوافق.


المفاهيم الأساسية ديال Docker

باش تفهم Docker مزيان، خاصك تعرف هاد المصطلحات:

  • Image: هو القالب أو النموذج (template) لي كيكون للقراءة فقط (read-only). هو بحال شي class فالبرمجة. هاد ال Image فيه التعليمات كاملة باش تصاوب ال container. مثلا، image ديال واحد التطبيق Node.js غايكون فيه نظام تشغيل خفيف (lightweight OS) + ال Node.js runtime + الكود ديال التطبيق ديالك.
  • Container: هو نسخة خدامة (running instance) من داك ال Image. هو بحال شي object من ديك ال class. تقدر تصاوب شحالما بغيتي ديال ال containers من نفس ال image. كل container كيكون معزول على خوه وعلى النظام الرئيسي (host machine).
  • Dockerfile: هو واحد الملف نصي (text file) كتكتب فيه الأوامر والتعليمات خطوة بخطوة باش Docker يبني ليك واحد ال Image مخصص للتطبيق ديالك. هو الوصفة باش تطيب الكيكة (ال Image).
  • Docker Hub / Registry: هو بحال GitHub ولكن ديال ال Images. هو واحد البلاصة online فين تقدر تلقى images واجدين (بحال image ديال Ubuntu, Node.js, MySQL…) وتقدر حتى نتا تحط فيه ال images ديالك.

مثال بسيط: Dockerfile

تخيل عندنا application بسيطة ب Node.js. هادا مثال ديال Dockerfile ديالها:

# 1. kankhtaro l image l asasiya li ghadi nbniw 3liha
# hna khtarina l image rasmiya dyal node.js l version 18
FROM node:18-alpine

# 2. kan7addo l working directory li khadi nkhdmo fih
WORKDIR /app

# 3. hna kancopiw l package.json w package-lock.json
COPY package*.json ./

# 4. kan installiw libraries li kay7tajha l application dyalna
RUN npm install

# 5. kancopiw l code dyal tatbi9 dyalna 
COPY . .

# 6. hna kan7addo l port li l container dyalna ghadi ykhdm fih
EXPOSE 3000

# 7. l amr li ghadi ytnfd mli ybda l container
CMD ["node", "server.js"]

بهاد الملف البسيط، أي واحد عندو Docker يقدر يبني نفس ال Image ويخدم نفس ال Container بلا حتى شي مشكل.

تحياتي، كان معاكم براهيم