نظرة عامة
Docker CLI هي أداتك الأساسية لبناء وتشغيل وإدارة الحاويات والصور. تغطي هذه الورقة المرجعية الأوامر التي تستخدمها كل يوم: بناء وسحب الصور، تشغيل وفحص الحاويات، إدارة الأحجام والشبكات، تنظيف الموارد، واستخدام buildx لبناء متعدد المنصات. جميع الأوامر حالية لـ Docker Engine 27.
الصور: البناء والإدارة
| الأمر | ما يفعله | مثال |
|---|---|---|
docker build -t <name>:<tag> . |
بناء صورة من Dockerfile في المجلد الحالي | docker build -t myapp:1.0 . |
docker build -f <dockerfile-path> -t <name>:<tag> <context> |
البناء باستخدام Dockerfile مسمّى | docker build -f Dockerfile.prod -t app:prod . |
docker build --build-arg <key>=<value> -t <name>:<tag> . |
تمرير حجج البناء إلى عملية البناء | docker build --build-arg NODE_ENV=production -t app:prod . |
docker build -m <memory> -t <name>:<tag> . |
حد الذاكرة أثناء البناء (مثل 1g) |
docker build -m 2g -t app:1.0 . |
docker build -t <name>:<tag> --no-cache . |
تعطيل تخزين الطبقات المؤقتة (إعادة البناء من الصفر) | docker build -t app:1.0 --no-cache . |
docker image ls |
قائمة جميع الصور على نظامك | docker image ls |
docker images |
اختصار لقائمة الصور | docker images |
docker images -a |
قائمة جميع الصور بما فيها الصور الوسيطة | docker images -a |
docker pull <image>:<tag> |
تحميل صورة من السجل | docker pull nginx:1.27 |
docker pull <registry>/<image>:<tag> |
السحب من سجل خاص | docker pull registry.example.com/myapp:1.0 |
docker tag <image>:<tag> <new-repo>:<new-tag> |
إنشاء علامة جديدة تشير إلى صورة | docker tag myapp:1.0 registry.example.com/myapp:latest |
docker push <image>:<tag> |
دفع صورة إلى سجل (افترض أن العلامة تتضمن السجل) | docker push registry.example.com/myapp:1.0 |
docker login <registry> |
المصادقة باستخدام سجل Docker | docker login docker.io |
docker logout <registry> |
إزالة المصادقة لسجل | docker logout docker.io |
docker rmi <image>:<tag> |
حذف صورة محلية | docker rmi myapp:1.0 |
docker rmi -f <image>:<tag> |
فرض حذف صورة (حتى لو كانت قيد الاستخدام) | docker rmi -f myapp:1.0 |
docker image prune |
إزالة الصور المعلقة (غير المسمّاة وغير المستخدمة) | docker image prune |
docker image prune -a |
إزالة جميع الصور غير المستخدمة | docker image prune -a |
docker inspect <image>:<tag> |
عرض معلومات مفصلة عن الصورة | docker inspect nginx:1.27 |
docker history <image>:<tag> |
عرض سجل الطبقات في صورة | docker history myapp:1.0 |
الحاويات: التشغيل والتفاعل
| الأمر | ما يفعله | مثال |
|---|---|---|
docker run <image> |
إنشاء وتشغيل حاوية من صورة | docker run ubuntu:latest |
docker run -d <image> |
تشغيل حاوية في وضع الفصل (الخلفية) | docker run -d nginx:latest |
docker run -it <image> <command> |
التشغيل بشكل تفاعلي مع terminal | docker run -it ubuntu:latest bash |
docker run --name <name> <image> |
إعطاء الحاوية اسماً مخصصاً | docker run --name webserver nginx:latest |
docker run -p <host-port>:<container-port> <image> |
تعيين منفذ من المضيف إلى الحاوية | docker run -p 8080:80 nginx:latest |
docker run -p <host-ip>:<host-port>:<container-port> <image> |
تعيين منفذ إلى عنوان IP معين للمضيف | docker run -p 127.0.0.1:8080:80 nginx:latest |
docker run -e <VAR>=<value> <image> |
تمرير متغير بيئي | docker run -e DATABASE_URL=postgres://localhost <image> |
docker run --env-file <file> <image> |
تحميل متغيرات البيئة من ملف | docker run --env-file .env app:latest |
docker run -v <host-path>:<container-path> <image> |
تثبيت حجم (bind mount) | docker run -v /data:/app/data app:latest |
docker run -v <volume-name>:<container-path> <image> |
تثبيت حجم مسمّى | docker run -v mydata:/app/data app:latest |
docker run -v <container-path> <image> |
إنشاء حجم مجهول | docker run -v /app/data app:latest |
docker run --mount type=bind,source=<host>,target=<container> <image> |
التثبيت بالصيغة الصريحة (أكثر وضوحاً) | docker run --mount type=bind,source=/data,target=/app/data app:latest |
docker run --rm <image> |
حذف الحاوية تلقائياً عند الخروج | docker run --rm ubuntu:latest echo "hello" |
docker run -w <workdir> <image> |
تعيين دليل العمل داخل الحاوية | docker run -w /app node:20 npm start |
docker run --user <uid>:<gid> <image> |
التشغيل برقم معرّف مستخدم محدد | docker run --user 1000:1000 app:latest |
docker run --cpus <count> <image> |
تحديد أنوية CPU (مثل 0.5 لنصف ядро) |
docker run --cpus 2 app:latest |
docker run -m <memory> <image> |
تحديد الذاكرة (مثل 512m، 1g) |
docker run -m 512m app:latest |
docker run --restart=<policy> <image> |
تعيين سياسة إعادة التشغيل: no, always, on-failure, unless-stopped | docker run --restart=always nginx:latest |
docker run --restart=on-failure:<max-retries> <image> |
إعادة التشغيل فقط عند الفشل، حتى N مرات | docker run --restart=on-failure:5 app:latest |
docker run --network <network> <image> |
توصيل الحاوية بشبكة معينة | docker run --network mynet app:latest |
docker run --add-host <host>:<ip> <image> |
إضافة إدخالات إلى /etc/hosts داخل الحاوية | docker run --add-host example.com:192.168.1.10 app:latest |
docker run --cap-add <capability> <image> |
إضافة قدرات Linux | docker run --cap-add SYS_ADMIN app:latest |
docker run --cap-drop <capability> <image> |
إسقاط قدرات Linux | docker run --cap-drop NET_RAW app:latest |
docker run --security-opt=no-new-privileges <image> |
منع تصعيد الامتيازات | docker run --security-opt=no-new-privileges app:latest |
فحص الحاويات والسجلات
| الأمر | ما يفعله | مثال |
|---|---|---|
docker ps |
قائمة الحاويات قيد التشغيل | docker ps |
docker ps -a |
قائمة جميع الحاويات (قيد التشغيل والمتوقفة) | docker ps -a |
docker ps -l |
عرض آخر حاوية (الأحدث) | docker ps -l |
docker container ls |
صيغة طويلة لقائمة الحاويات | docker container ls |
docker logs <container> |
طباعة سجلات الحاوية | docker logs mycontainer |
docker logs -f <container> |
بث السجلات بشكل مستمر (متابعة) | docker logs -f mycontainer |
docker logs --tail <lines> <container> |
عرض آخر N سطر فقط | docker logs --tail 50 mycontainer |
docker logs --since <time> <container> |
عرض السجلات منذ وقت معين (مثل 1h، 10m) |
docker logs --since 1h mycontainer |
docker logs --timestamps <container> |
تضمين الطوابع الزمنية في الإخراج | docker logs --timestamps mycontainer |
docker inspect <container> |
عرض تكوين JSON مفصل للحاوية | docker inspect mycontainer |
docker stats |
عرض إحصائيات CPU والذاكرة والشبكة والإدخال/الإخراج المباشرة لجميع الحاويات | docker stats |
docker stats <container> |
عرض إحصائيات حاوية محددة | docker stats mycontainer |
docker top <container> |
عرض العمليات قيد التشغيل داخل الحاوية | docker top mycontainer |
docker diff <container> |
عرض التغييرات في نظام الملفات منذ بدء الحاوية | docker diff mycontainer |
docker port <container> |
قائمة تعيينات المنفذ للحاوية | docker port mycontainer |
دورة حياة الحاوية
| الأمر | ما يفعله | مثال |
|---|---|---|
docker start <container> |
بدء حاوية متوقفة | docker start mycontainer |
docker stop <container> |
إيقاف حاوية قيد التشغيل برفق | docker stop mycontainer |
docker stop --time <seconds> <container> |
انتظر N ثانية قبل القتل (الافتراضي 10) | docker stop --time 30 mycontainer |
docker kill <container> |
فرض إيقاف حاوية (SIGKILL) | docker kill mycontainer |
docker restart <container> |
إيقاف وبدء حاوية | docker restart mycontainer |
docker pause <container> |
إيقاف حاوية قيد التشغيل (تجميد العمليات) | docker pause mycontainer |
docker unpause <container> |
استئناف حاوية مجمدة | docker unpause mycontainer |
docker rm <container> |
حذف حاوية متوقفة | docker rm mycontainer |
docker rm -f <container> |
فرض حذف حاوية قيد التشغيل | docker rm -f mycontainer |
docker container prune |
إزالة جميع الحاويات المتوقفة | docker container prune |
Exec: تشغيل الأوامر داخل الحاويات قيد التشغيل
| الأمر | ما يفعله | مثال |
|---|---|---|
docker exec <container> <command> |
تشغيل أمر داخل حاوية (بدون تفاعل) | docker exec mycontainer ps aux |
docker exec -it <container> bash |
تشغيل bash بشكل تفاعلي داخل حاوية | docker exec -it mycontainer bash |
docker exec -it <container> sh |
تشغيل sh (يعمل في الصور الأصغر بدون bash) | docker exec -it mycontainer sh |
docker exec -u <user> <container> <command> |
التشغيل كمستخدم محدد | docker exec -u nobody mycontainer whoami |
docker exec -w <workdir> <container> <command> |
التشغيل في دليل عمل معين | docker exec -w /app mycontainer npm start |
docker exec -e <VAR>=<value> <container> <command> |
تمرير متغير بيئي لـ exec هذا | docker exec -e DEBUG=1 mycontainer app |
الأحجام والتخزين المستمر
| الأمر | ما يفعله | مثال |
|---|---|---|
docker volume create <name> |
إنشاء حجم مسمّى | docker volume create mydata |
docker volume ls |
قائمة جميع الأحجام | docker volume ls |
docker volume inspect <name> |
عرض معلومات مفصلة عن حجم | docker volume inspect mydata |
docker volume rm <name> |
حذف حجم | docker volume rm mydata |
docker volume prune |
إزالة الأحجام غير المستخدمة | docker volume prune |
docker volume prune -a |
إزالة جميع الأحجام غير المستخدمة (استخدم بحذر) | docker volume prune -a |
الشبكات
| الأمر | ما يفعله | مثال |
|---|---|---|
docker network create <name> |
إنشاء شبكة bridge مخصصة | docker network create mynet |
docker network ls |
قائمة جميع الشبكات | docker network ls |
docker network inspect <name> |
عرض معلومات مفصلة عن شبكة | docker network inspect mynet |
docker network connect <network> <container> |
توصيل حاوية قيد التشغيل بشبكة | docker network connect mynet mycontainer |
docker network disconnect <network> <container> |
فصل حاوية عن شبكة | docker network disconnect mynet mycontainer |
docker network rm <name> |
حذف شبكة | docker network rm mynet |
docker network prune |
إزالة الشبكات غير المستخدمة | docker network prune |
السياق (لمضيفي Docker المتعددين)
| الأمر | ما يفعله | مثال |
|---|---|---|
docker context ls |
قائمة سياقات Docker المتاحة | docker context ls |
docker context create <name> --description "<desc>" --docker "host=<host>" |
إنشاء سياق جديد (مثل لمضيف بعيد) | docker context create prod --docker "host=ssh://user@prod.example.com" |
docker context use <name> |
التبديل إلى سياق Docker مختلف | docker context use prod |
docker context inspect <name> |
عرض تفاصيل السياق | docker context inspect prod |
تنظيف النظام والصيانة
| الأمر | ما يفعله | مثال |
|---|---|---|
docker system prune |
إزالة الحاويات المتوقفة والصور المعلقة والشبكات غير المستخدمة | docker system prune |
docker system prune -a |
أيضاً إزالة جميع الصور غير المستخدمة (وليس فقط المعلقة) | docker system prune -a |
docker system prune --volumes |
أيضاً إزالة الأحجام غير المستخدمة | docker system prune --volumes |
docker system df |
عرض استخدام القرص من قبل الصور والحاويات والأحجام | docker system df |
docker system events |
بث أحداث Docker في الوقت الفعلي (pull، push، build، run، إلخ) | docker system events |
Buildx: البناء متعدد المنصات
| الأمر | ما يفعله | مثال |
|---|---|---|
docker buildx ls |
قائمة برامج التشغيل والمنصات المتاحة | docker buildx ls |
docker buildx create --name <builder> |
إنشاء مثيل builder جديد | docker buildx create --name mybuilder |
docker buildx use <builder> |
التبديل إلى builder | docker buildx use mybuilder |
docker buildx build --platform <platforms> -t <image>:<tag> . |
البناء لمنصات متعددة (مثل linux/amd64,linux/arm64) |
docker buildx build --platform linux/amd64,linux/arm64 -t app:1.0 . |
docker buildx build --platform <platforms> --push -t <image>:<tag> . |
بناء ودفع صورة متعددة المنصات إلى السجل | docker buildx build --platform linux/amd64,linux/arm64 --push -t registry.example.com/app:1.0 . |
docker buildx build --platform <platforms> --output type=docker -t <image>:<tag> . |
بناء لمنصات متعددة وتحميل إلى Docker المحلي (منصة واحدة فقط) | docker buildx build --platform linux/amd64 --output type=docker -t app:1.0 . |
الأنماط التي ستعاد استخدامها
# تنظيف كل شيء (استخدم بحذر!)
docker system prune -a --volumes
# بناء وعلامة لسجل في خطوة واحدة
docker build -t registry.example.com/myapp:1.0 .
docker push registry.example.com/myapp:1.0
# تشغيل حاوية مؤقتة وتشغيل أمر وحذف تلقائي
docker run --rm ubuntu:latest dpkg -l | grep nginx
# نسخ الملفات إلى/من حاوية
docker cp myfile.txt mycontainer:/app/myfile.txt
docker cp mycontainer:/app/output.log ./
# الحصول على عنوان IP لحاوية قيد التشغيل
docker inspect mycontainer | grep '"IPAddress"'
# فحص طبقة في صورة
docker history myapp:1.0
# تحقق من استخدام الموارد لجميع الحاويات
docker stats --all
# البحث عن الحاويات حسب الصورة
docker ps -a --filter ancestor=nginx:latest
الأسئلة الشائعة
ما الفرق بين docker run و docker start؟
docker run ينشئ حاوية جديدة من صورة ويبدأها؛ docker start يستأنف حاوية متوقفة. استخدم run للعمل الجديد، و start لإعادة استخدام حاوية متوقفة.
كيف أشغل حاوية في الخلفية؟
استخدم docker run -d <image> للفصل. تعمل الحاوية في الخلفية وتحصل على معرّف الحاوية. استخدم docker logs <id> لعرض الإخراج.
كيف أسحب صورة خاصة من السجل؟
أولاً قم بتسجيل الدخول باستخدام docker login -u <username> <registry>، ثم docker pull <registry>/<image>:<tag>. يتم تخزين بيانات الاعتماد محلياً في ~/.docker/config.json.
كيف أزيل موارد Docker غير المستخدمة؟
استخدم docker system prune لإزالة الحاويات المتوقفة والصور غير المستخدمة والأحجام المعلقة. أضف -a لإزالة جميع الصور غير المستخدمة (وليس فقط المعلقة)، و --volumes لإزالة الأحجام غير المستخدمة أيضاً.
كيف أشغل أمراً داخل حاوية قيد التشغيل؟
استخدم docker exec -it <container> bash (أو sh للصور الصغيرة). يحافظ -i على stdin مفتوحاً، و -t يخصص pseudo-terminal للتفاعل.
كيف تم التحقق من هذا الدليل
كُتب يدويًا من الوثائق الرسمية، وأُعيد فحص كل أمر، ثم رُوجع مرة ثانية قبل النشر. آخر مراجعة في .
المصادر الرسمية التي قُرئت لهذا المقال

