Docker: تثبيت Docker وإعداد البيئة
آخر تحديث: 2026-08-26
تثبيت Docker أسهل مما تتخيل — سواء كنت تستخدم Windows أو Mac أو Linux، يمكنك الحصول على بيئة حاويات كاملة الوظائف في 10 دقائق.
1. ما ستتعلمه
- كيفية تثبيت Docker على منصات مختلفة
- الفرق بين Docker Desktop و Docker Engine
- إعداد مسرّع المرآة (Mirror Accelerator)
- تشغيل Docker كمستخدم بدون صلاحيات root
- إدارة سياق Docker
2. قصة حقيقية لقائد تقني في فريق
(1) التحدي: 15 شخصًا بظروف مختلفة
كان فريق تشارلي قد قرر للتو اعتماد Docker بالكامل، لكن ليزا، عضوة الفريق الجديدة، سألت: "هل يجب أن أثبت Docker Desktop أم Docker Engine؟ هل عملية التثبيت هي نفسها على Mac و Linux؟" كان الفريق المكون من 15 شخصًا يستخدم أربعة أنظمة تشغيل مختلفة (Windows و Mac و Ubuntu و CentOS)، وكانت عملية التثبيت تختلف لكل منها؛ استغرقت عملية إعداد البيئة وحدها يومين.
(2) تنفيذ خوارزمية شجرة القرار
رسم تشارلي شجرة قرار للتثبيت — 3 أنواع أنظمة تشغيل × وضعين — وجعل الفريق يعمل في 15 دقيقة.
# التحقق من تثبيت Docker بعد الإعداد
docker run hello-world
(3) الفوائد: بيئة موحدة خالية من الاحتكاك
بعد أن أكمل الفريق التثبيت الموحد، أصبحت مخرجات docker version للجميع متسقة، وانخفض عدد المشكلات المتعلقة بالبيئة من 5 أسبوعيًا إلى 0.
3. Docker Desktop مقابل Docker Engine
قبل تثبيت Docker، تأكد من فهم الاختلافات بين التوزيعتين.
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 |
4. تعليمات التثبيت لكل منصة
(1) التثبيت على Windows
المتطلبات الأساسية:
- Windows 10 64-bit (الإصدار 1903 أو أحدث) أو Windows 11
- تفعيل WSL2 (نظام Windows الفرعي لنظام Linux 2)
- تفعيل Hyper-V (اختياري؛ يُوصى بوضع WSL2)
خطوات التثبيت:
| الخطوة | الإجراء |
|---|---|
| 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)
# 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 (الصعوبة: ⭐)
# إضافة المستخدم الحالي إلى مجموعة 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 (الصعوبة: ⭐⭐)
# إنشاء أو تعديل إعدادات 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"
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 (الصعوبة: ⭐⭐)
# عرض جميع سياقات Docker
docker context ls
NAME TYPE DESCRIPTION
default * moby Current DOCKER_HOST based configuration
remote-server moby Remote Docker on 10.0.1.100
# إنشاء سياق جديد لمضيف 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
▶ مثال: التحقق من نجاح التثبيت (الصعوبة: ⭐)
# قائمة تحقق كاملة
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 من الصفر
# ============================================
# شرح كامل: تثبيت 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
# 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>...
❓ أسئلة شائعة
pull؛ وعمليات push لا تزال تمر عبر مسار Docker Hub الأصلي. داخليًا، نوصي بإعداد سجل خاص.docker version يجب أن ترى معلومات لكل من قسمي Client و Server؛ ② docker info يجب أن تُعرض المخرجات بشكل طبيعي؛ ③ docker run hello-world يجب أن تُعرض "Hello from Docker!". إذا نجحت الخطوات الثلاث، فالتثبيت مكتمل.docker system df للتحقق من المساحة المستخدمة و docker system prune لتنظيفها.📖 ملخص
- Docker Desktop مناسب للتطوير على Windows و Mac (مع واجهة رسومية)، بينما Docker Engine مناسب لخوادم Linux (CLI فقط)
- لنظام Windows، استخدم وضع WSL2؛ لنظام Mac، اختر الإصدار المناسب بناءً على ما إذا كان نظامك يستخدم Intel أو Apple Silicon
- استخدم مستودعات APT/YUM الرسمية لتثبيت Linux؛ لا تستخدم الإصدارات القديمة المضمنة مع النظام.
- إضافة مستخدم إلى مجموعة docker يسمح له بتشغيل Docker بدون استخدام sudo
- قم بإعداد مسرّع مرآة لحل مشكلة بطء الوصول إلى Docker Hub داخل الصين
- يتيح Docker Context التبديل السريع بين مضيفي Docker المحليين والبعيدين
📝 تمارين
- مسألة أساسية (الصعوبة: ⭐): ثبّت Docker على جهازك المحلي، وشغّل
docker run hello-world، والتقط لقطة شاشة للمخرجات لحفظها. - تمرين متقدم (الصعوبة: ⭐⭐): قم بإعداد مسرّع مرآة محلي وشغّل
docker info | grep -A 5 "Registry Mirrors"للتحقق من أن الإعداد يعمل. - تحدٍ (الصعوبة: ⭐⭐⭐): شغّل
docker run -d -p 8080:80 nginxلبدء Nginx، واستخدم متصفحًا لزيارةhttp://localhost:8080للتحقق من عرض الصفحة بشكل صحيح، ثم استخدمdocker stopوdocker rmلتنظيف الحاويات.