Docker: تثبيت Docker وإعداد البيئة

آخر تحديث: 2026-08-26

تثبيت Docker أسهل مما تتخيل — سواء كنت تستخدم Windows أو Mac أو Linux، يمكنك الحصول على بيئة حاويات كاملة الوظائف في 10 دقائق.

1. ما ستتعلمه



2. قصة حقيقية لقائد تقني في فريق

(1) التحدي: 15 شخصًا بظروف مختلفة

كان فريق تشارلي قد قرر للتو اعتماد Docker بالكامل، لكن ليزا، عضوة الفريق الجديدة، سألت: "هل يجب أن أثبت Docker Desktop أم Docker Engine؟ هل عملية التثبيت هي نفسها على Mac و Linux؟" كان الفريق المكون من 15 شخصًا يستخدم أربعة أنظمة تشغيل مختلفة (Windows و Mac و Ubuntu و CentOS)، وكانت عملية التثبيت تختلف لكل منها؛ استغرقت عملية إعداد البيئة وحدها يومين.

(2) تنفيذ خوارزمية شجرة القرار

رسم تشارلي شجرة قرار للتثبيت — 3 أنواع أنظمة تشغيل × وضعين — وجعل الفريق يعمل في 15 دقيقة.

BASH
# التحقق من تثبيت Docker بعد الإعداد
docker run hello-world

(3) الفوائد: بيئة موحدة خالية من الاحتكاك

بعد أن أكمل الفريق التثبيت الموحد، أصبحت مخرجات docker version للجميع متسقة، وانخفض عدد المشكلات المتعلقة بالبيئة من 5 أسبوعيًا إلى 0.



3. Docker Desktop مقابل Docker Engine

قبل تثبيت Docker، تأكد من فهم الاختلافات بين التوزيعتين.

100%
graph TB
    START["اختيار إصدار Docker"] --> OS{"نظام التشغيل<br/>لديك؟"}
    OS -->|Windows / Mac| DT["Docker Desktop<br/>مع واجهة رسومية + آلة افتراضية + CLI"]
    OS -->|خادم Linux| DE["Docker Engine<br/>خدمات CLI فقط"]
    DT --> DEV["✅ موصى به لبيئات التطوير"]
    DE --> PROD["✅ موصى به لبيئات الإنتاج"]

(1) مقارنة بين التوزيعتين

البُعد Docker Desktop Docker Engine
المكونات المضمنة CLI + Daemon + واجهة رسومية + آلة افتراضية CLI + Daemon (خدمة خلفية فقط)
المنصات المدعومة Windows / Mac / Linux Linux فقط
استخدام الموارد مرتفع (2–4 جيجابايت، بما في ذلك الآلات الافتراضية) منخفض (يعمل مباشرة على نواة المضيف)
الإدارة بالواجهة الرسومية ✅ يحتوي على لوحة تحكم ❌ سطر الأوامر فقط
حالات الاستخدام الكمبيوتر الشخصي للمطور بيئة الخادم/CI
السعر مجاني للأفراد، مدفوع للشركات مجاني بالكامل (إصدار CE)

(2) عملية اتخاذ قرار التثبيت

المتطلب الإصدار الموصى به
تطوير على Windows / Mac Docker Desktop
تطوير على Linux Desktop Docker Desktop (يتطلب واجهة رسومية) أو Engine
إنتاج على خادم Linux Docker Engine
عُقد بناء CI/CD Docker Engine
💡 نصيحة: هناك أيضًا إصدار Docker Desktop متاح لنظام Linux، لكن معظم مطوري Linux يفضلون استخدام Docker Engine مباشرة — فهو أخف ولا يحتوي على طبقة محاكاة افتراضية إضافية.



4. تعليمات التثبيت لكل منصة

(1) التثبيت على Windows

المتطلبات الأساسية:

خطوات التثبيت:

الخطوة الإجراء
1 تنزيل Docker Desktop for Windows (docker.com/products/docker-desktop)
2 انقر نقرًا مزدوجًا على المثبت وتأكد من تحديد "Use WSL 2 instead of Hyper-V"
3 أعد تشغيل الكمبيوتر بعد التثبيت
4 ابدأ Docker Desktop وانتظر حتى تتغير الحالة إلى "Running"
5 افتح الطرفية للتحقق: docker version

(2) التثبيت على Mac

الخطوة الإجراء
1 تنزيل Docker Desktop for Mac (اختر "amd64" لمعالجات Intel و "arm64" لـ Apple Silicon)
2 اسحب Docker.app إلى مجلد التطبيقات
3 شغّل Docker.app وانتظر حتى يستقر رمز الحوت في شريط القائمة
4 التحقق في الطرفية: docker version

(3) التثبيت على Linux (Ubuntu/Debian)

BASH
# 1. تحديث فهرس الحزم
sudo apt-get update

# 2. تثبيت المتطلبات الأساسية
sudo apt-get install -y ca-certificates curl gnupg

# 3. إضافة مفتاح GPG الرسمي لـ Docker
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

# 4. إضافة مستودع Docker
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo $VERSION_CODENAME) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 5. تثبيت Docker Engine
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# 6. بدء Docker
sudo systemctl start docker
sudo systemctl enable docker

# 7. التحقق
sudo docker run hello-world


5. الإعداد للمستخدمين بدون صلاحيات root

افتراضيًا، يمكن فقط للمستخدم root وأعضاء مجموعة docker تشغيل Docker على Linux.

▶ مثال: إضافة المستخدم الحالي إلى مجموعة docker (الصعوبة: ⭐)

BASH
# إضافة المستخدم الحالي إلى مجموعة docker
sudo usermod -aG docker $USER

# تطبيق تغيير المجموعة (أو تسجيل الخروج والدخول مرة أخرى)
newgrp docker

# التحقق: تشغيل docker بدون sudo
docker run hello-world
⚠️ ملاحظة: كونك عضوًا في مجموعة docker يعادل امتلاك صلاحيات root (لأن الحاويات يمكنها تركيب أي دليل على المضيف). في بيئة الإنتاج، يجب التحكم الصارم في عضوية مجموعة docker.



6. إعداد مسرّع المرآة (Mirror Accelerator)

قد يكون الوصول إلى Docker Hub من داخل الصين بطيئًا، لكن إعداد مسرّع صور يمكن أن يحسن سرعات التنزيل بشكل كبير.

(1) مسرعات المرآة الشائعة

المسرّع العنوان الوصف
Alibaba Cloud https://<معرفك>.mirror.aliyuncs.com سجّل الدخول للحصول على رابطك الفريد
USTC https://docker.mirrors.ustc.edu.cn مجاني، لا يتطلب تسجيلاً
NetEase https://hub-mirror.c.163.com مجاني
Docker الرسمي https://registry.docker.io افتراضي، سرعات سريعة من الخارج

▶ مثال: إعداد مسرّع مرآة على Linux (الصعوبة: ⭐⭐)

BASH
# إنشاء أو تعديل إعدادات Docker daemon
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<'EOF'
{
  "registry-mirrors": [
    "https://docker.mirrors.ustc.edu.cn",
    "https://hub-mirror.c.163.com"
  ]
}
EOF

# إعادة تشغيل Docker لتطبيق التغييرات
sudo systemctl daemon-reload
sudo systemctl restart docker

# التحقق من الإعدادات
docker info | grep -A 5 "Registry Mirrors"
💻 المخرجات:

TEXT 📖 للعرض فقط
Registry Mirrors:
  https://docker.mirrors.ustc.edu.cn/
  https://hub-mirror.c.163.com/

▶ مثال: إعداد مسرّع الصور في Docker Desktop (الصعوبة: ⭐)

للإعداد في واجهة Docker Desktop الرسومية: Settings → Docker Engine → أضف مصفوفة registry-mirrors إلى JSON → Apply & Restart.

أو عدّل ملف الإعدادات مباشرة (Mac: ~/.docker/daemon.json، Windows: C:\Users\<user>\.docker\daemon.json).



7. إدارة سياق Docker

تتيح لك سياقات Docker التبديل بسرعة بين مضيفي Docker متعددين — مثل مثيل Docker المحلي وخادم بعيد.

▶ مثال: عرض وتبديل سياقات Docker (الصعوبة: ⭐⭐)

BASH
# عرض جميع سياقات Docker
docker context ls
💻 المخرجات:

TEXT 📖 للعرض فقط
NAME                TYPE                DESCRIPTION
default *           moby                Current DOCKER_HOST based configuration
remote-server       moby                Remote Docker on 10.0.1.100
BASH
# إنشاء سياق جديد لمضيف Docker بعيد
docker context create remote-server --docker "host=ssh://user@10.0.1.100"

# التبديل إلى السياق البعيد
docker context use remote-server

# التحقق: الآن جميع أوامر docker تعمل على الخادم البعيد
docker ps

# العودة إلى المحلي
docker context use default

▶ مثال: التحقق من نجاح التثبيت (الصعوبة: ⭐)

BASH
# قائمة تحقق كاملة
docker version          # إصدارات العميل + الخادم
docker info             # معلومات النظام
docker run hello-world  # اختبار شامل


8. استكشاف مشكلات التثبيت الشائعة وإصلاحها

المشكلة السبب الحل
Cannot connect to the Docker daemon خدمة Docker لا تعمل sudo systemctl start docker
permission denied while trying to connect المستخدم ليس في مجموعة docker sudo usermod -aG docker $USER
WSL2 installation is incomplete (Windows) WSL2 غير مثبت بشكل صحيح wsl --install ثم أعد التشغيل
docker: command not found Docker غير مضمن في PATH أعد التثبيت أو أضفه يدويًا إلى PATH
انتهاء مهلة استرداد المرآة مشكلات في الشبكة قم بإعداد مسرّع المرآة


9. مثال كامل: إعداد بيئة Docker على خادم Ubuntu من الصفر

BASH
# ============================================
# شرح كامل: تثبيت Docker على Ubuntu
# يغطي: التثبيت، بدون sudo، المرآة، التحقق
# ============================================

# 1. تثبيت Docker Engine
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo $VERSION_CODENAME) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# 2. بدء وتمكين خدمة Docker
sudo systemctl start docker
sudo systemctl enable docker

# 3. إضافة المستخدم الحالي إلى مجموعة docker (لا مزيد من sudo)
sudo usermod -aG docker $USER
newgrp docker

# 4. إعداد مرآة السجل لتنزيلات أسرع
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<'EOF'
{
  "registry-mirrors": [
    "https://docker.mirrors.ustc.edu.cn"
  ]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

# 5. التحقق: تشغيل Nginx والوصول إليه
docker run -d -p 8080:80 --name test-nginx nginx:latest
curl http://localhost:8080

# 6. التنظيف
docker stop test-nginx
docker rm test-nginx
💻 المخرجات (مقتطف):

TEXT 📖 للعرض فقط
# docker run -d -p 8080:80 --name test-nginx nginx:latest
a1b2c3d4e5f6...

# curl http://localhost:8080
<!DOCTYPE html>
<html><head><title>Welcome to nginx!</title>...

❓ أسئلة شائعة

س هل Docker Desktop مجاني؟
ج إنه مجاني للاستخدام الشخصي والشركات الصغيرة (<250 موظفًا، <10 ملايين دولار أمريكي إيرادات سنوية). تحتاج الشركات الكبيرة إلى شراء اشتراك Docker Business (يبدأ من $24 لكل مستخدم شهريًا). Docker Engine (إصدار Linux) دائمًا مجاني ومفتوح المصدر.
س لماذا يُوصى بـ Engine بدلاً من Desktop على Linux؟
ج يعمل Docker Engine مباشرة على نواة المضيف بدون طبقة محاكاة افتراضية إضافية، مما يؤدي إلى استهلاك أقل للموارد وأداء أفضل. يتطلب Desktop تشغيل آلة افتراضية على Linux لتوفير واجهة رسومية، مما يضيف طبقة إضافية من العبء. نظرًا لأن بيئات الخادم لا تتطلب واجهة رسومية، فإن Engine هو الخيار الأنسب.
س هل مسرعات المرآة آمنة؟
ج المسرعات الرئيسية (Alibaba Cloud، USTC، NetEase) كلها وكلاء CDN موثوقون يقومون فقط بتخزين الصور الرسمية مؤقتًا دون تعديل محتواها. ومع ذلك، فإن هذه المسرعات تسرع فقط عمليات pull؛ وعمليات push لا تزال تمر عبر مسار Docker Hub الأصلي. داخليًا، نوصي بإعداد سجل خاص.
س كيف أتحقق من تثبيت Docker بنجاح؟
ج تحقق من ثلاث خطوات: ① docker version يجب أن ترى معلومات لكل من قسمي Client و Server؛ ② docker info يجب أن تُعرض المخرجات بشكل طبيعي؛ ③ docker run hello-world يجب أن تُعرض "Hello from Docker!". إذا نجحت الخطوات الثلاث، فالتثبيت مكتمل.
س كيف أختار بين WSL2 و Hyper-V؟
ج اختر WSL2 أولاً — فهو يبدأ بشكل أسرع، ويستخدم الذاكرة بشكل أكثر ديناميكية، ويتكامل بشكل أفضل مع Windows. استخدم Hyper-V فقط عندما لا يكون WSL2 متاحًا (كما في الإصدارات الأقدم من Windows 10). يوصي Docker Desktop بوضع WSL2 افتراضيًا.
س ما مقدار مساحة القرص التي يشغلها Docker بعد التثبيت؟
ج يشغل Docker Engine حوالي 300 ميجابايت، ويشغل Docker Desktop (بما في ذلك الآلة الافتراضية) حوالي 2–4 جيجابايت. مع تنزيل الصور وإنشاء الحاويات، ستستمر المساحة المستخدمة في النمو. يمكنك استخدام docker system df للتحقق من المساحة المستخدمة و docker system prune لتنظيفها.

📖 ملخص


📝 تمارين

  1. مسألة أساسية (الصعوبة: ⭐): ثبّت Docker على جهازك المحلي، وشغّل docker run hello-world، والتقط لقطة شاشة للمخرجات لحفظها.
  2. تمرين متقدم (الصعوبة: ⭐⭐): قم بإعداد مسرّع مرآة محلي وشغّل docker info | grep -A 5 "Registry Mirrors" للتحقق من أن الإعداد يعمل.
  3. تحدٍ (الصعوبة: ⭐⭐⭐): شغّل docker run -d -p 8080:80 nginx لبدء Nginx، واستخدم متصفحًا لزيارة http://localhost:8080 للتحقق من عرض الصفحة بشكل صحيح، ثم استخدم docker stop و docker rm لتنظيف الحاويات.
Web-Tutorial.com

فريق Web-Tutorial التقني

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

100%