نظرة عامة

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 للتفاعل.

كيف تم التحقق من هذا الدليل

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

المصادر الرسمية التي قُرئت لهذا المقال

شاركها.

التعليقات مغلقة.