Docker-py: إدارة حاويات Docker باستخدام Python

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

مقدمة عن Docker SDK for Python

الحاويات (Containerization) هي حجر الزاوية في البنية التحتية الحديثة لـ DevOps. أصبح Docker المعيار الفعلي لعزل التطبيقات وإدارة البيئات. ولكن عندما تحتاج إلى تحكم أكثر مرونة وقابلية للبرمجة في الحاويات، يأتي دور Docker SDK for Python، المعروف باسم docker-py.

تتيح لك هذه المكتبة التفاعل مباشرة مع خادم Docker (Docker daemon) عبر كود Python، لإدارة الحاويات والصور والشبكات ووحدات التخزين وكل ما تفعله عادة من سطر الأوامر CLI. بفضل ذلك، يُستخدم docker-py على نطاق واسع في خطوط CI/CD والأتمتة والاختبار والتحكم الديناميكي في التنسيق (Orchestration).

ما هو Docker SDK for Python

Docker SDK for Python هي مكتبة Python رسمية توفر واجهة عالية المستوى للتفاعل مع Docker Engine API. تسمح المكتبة للمطورين بدمج وظائف Docker مباشرة في تطبيقات Python، وأتمتة عمليات النشر وإدارة الحاويات.

الميزات الرئيسية للمكتبة

توفر Docker SDK مجموعة كاملة من الأدوات للعمل مع Docker:

  • التحكم البرمجي في دورة حياة الحاويات
  • أتمتة بناء ونشر الصور (Images)
  • تكوين الشبكات ووحدات التخزين
  • التكامل مع أنظمة المراقبة وتسجيل السجلات
  • دعم Docker Swarm للتنسيق
  • معالجة أحداث Docker في الوقت الفعلي

التثبيت والإعداد الأولي

تثبيت المكتبة

لتثبيت Docker SDK، استخدم مدير الحزم pip القياسي:

pip install docker

للتثبيت مع التبعيات الإضافية لدعم SSH و TLS:

pip install docker[ssh,tls]

الاتصال بـ Docker Engine

الاتصال الأساسي بخادم Docker المحلي:

import docker

# اتصال تلقائي عبر متغيرات البيئة
client = docker.from_env()

# تحديد معلمات الاتصال بشكل صريح
client = docker.DockerClient(base_url='unix://var/run/docker.sock')

# الاتصال بـ Docker Engine عن بُعد
client = docker.DockerClient(base_url='tcp://192.168.1.100:2376')

التحقق من الاتصال

try:
    # التحقق من توفر Docker Engine
    print("Docker Engine متاح:", client.ping())
    
    # الحصول على معلومات النظام
    info = client.info()
    print(f"إصدار Docker: {info['ServerVersion']}")
    print(f"البنية: {info['Architecture']}")
    
except docker.errors.DockerException as e:
    print(f"خطأ في الاتصال بـ Docker: {e}")

الهيكل المعماري للمكتبة

تم بناء Docker SDK for Python كغلاف (Wrapper) حول REST API الخاص بـ Docker Engine، مما يوفر واجهات عالية ومنخفضة المستوى للتفاعل مع Docker.

هيكل الوحدات

تم تنظيم المكتبة في عدة وحدات رئيسية:

  • docker.DockerClient — العميل الرئيسي للتفاعل عالي المستوى
  • docker.APIClient — عميل API منخفض المستوى
  • docker.models — نماذج موجهة للكائنات للعمل مع الموارد
  • docker.types — أنواع بيانات مساعدة
  • docker.errors — الاستثناءات ومعالجة الأخطاء

المبادئ المعمارية

تتبع المكتبة مبادئ REST API الخاصة بـ Docker Engine:

  • كل مورد (حاوية، صورة، شبكة) يتم تمثيله بكائن منفصل
  • يتم تنفيذ العمليات عبر طرق الكائنات
  • دعم التنفيذ غير المتزامن للعمليات
  • معالجة تلقائية للاتصالات وإعادة الاتصال

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

إنشاء

توصيات