Docker Images وContainers: الأوامر الأساسية ودورة الحياة

بعد مقدمة Docker، تحتاج الآن إلى إتقان إدارة الصور والحاويات في الحياة اليومية.

هذا الدرس يركز على الأوامر العملية التي تستخدمها كل يوم في التطوير وDevOps.

الفرق بين Image وContainer

  • Image: قالب ثابت يحتوي التطبيق والاعتماديات
  • Container: instance تعمل فعليا من Image
  • يمكن تشغيل عدة Containers من نفس Image

استعراض الصور والحاويات

docker images
docker ps
docker ps -a
الأمر الوظيفة
docker images عرض الصور الموجودة محليًا
docker ps عرض الحاويات الجارية
docker ps -a عرض كل الحاويات (بما فيها المتوقفة)

جلب صورة من Docker Hub

docker pull nginx:latest
docker pull redis:7

استخدم tag محدد في البيئات الجدية بدل الاعتماد دائمًا على latest.

تشغيل حاوية من صورة

docker run -d --name web -p 8080:80 nginx
docker run --name test-redis redis:7
  • -d: تشغيل بالخلفية
  • --name: اسم واضح للحاوية
  • -p host:container: ربط المنافذ

إدارة دورة حياة الحاوية

docker start web
docker stop web
docker restart web
docker rm web

لا يمكنك حذف حاوية جارية قبل إيقافها (إلا باستخدام force).

مراقبة الحاوية: logs وexec

docker logs web
docker logs -f web
docker exec -it web /bin/bash

logs للتشخيص، وexec للدخول داخل الحاوية لفحص سريع.

إنشاء Docker Image من Dockerfile

مثال Dockerfile بسيط:

FROM nginx:alpine
COPY index.html /usr/share/nginx/html/index.html

بناء الصورة:

docker build -t my-nginx:v1 .
docker run -d --name mysite -p 8081:80 my-nginx:v1

فهم tags في Docker Images

docker tag my-nginx:v1 my-nginx:prod
docker images

tag يساعدك تميّز نسخ الصور (dev، test، prod).

تنظيف الموارد غير المستخدمة

docker container prune
docker image prune
docker system prune
تحذير: أوامر prune تحذف موارد غير مستخدمة. تأكد قبل التنفيذ في بيئة إنتاج.

أفضل ممارسات Images وContainers

  • استخدم tags واضحة بدل latest دائمًا
  • راقب logs للحاويات الحرجة
  • لا تحفظ أسرار داخل image
  • نظف الموارد المؤقتة دوريًا

تمرين عملي: Build + Run + Logs

mkdir -p /tmp/docker-lab && cd /tmp/docker-lab
echo "<h1>Docker Lab</h1>" > index.html
cat > Dockerfile <<'EOF'
FROM nginx:alpine
COPY index.html /usr/share/nginx/html/index.html
EOF

docker build -t docker-lab:v1 .
docker run -d --name docker-lab -p 8090:80 docker-lab:v1
docker logs docker-lab
curl http://localhost:8090
docker stop docker-lab && docker rm docker-lab

إذا ظهر محتوى الصفحة عبر curl، فأنت أتقنت دورة Images/Containers الأساسية.

FAQ: أسئلة شائعة حول Docker Images وContainers

ما الفرق بين Docker Image وDocker Container؟

Image هي قالب ثابت، بينما Container هو نسخة قيد التشغيل من هذا القالب.

كيف أبني Docker image من Dockerfile؟

استخدم docker build -t image_name:tag . داخل المجلد الذي يحتوي Dockerfile.

كيف أنظف Docker resources غير المستخدمة؟

يمكنك استخدام docker system prune بحذر لحذف الحاويات المتوقفة والصور غير المستخدمة والموارد المؤقتة.

الخطوة التالية

في الدرس القادم سنبدأ أساسيات CI/CD على Linux.

التالي: CI/CD Basics
المحرر الذكي

اكتب الكود وشاهد النتيجة فوراً

جرب الآن مجاناً
قناة ديف عربي

تابع أحدث الدروس والتحديثات مباشرة على واتساب

انضم الآن