Docker هو حل مجاني ومفتوح المصدر لتطوير ونشر وإدارة التطبيقات في بيئة افتراضية خفيفة الوزن على مستوى نظام التشغيل. في هذا الدليل، سنشرح كيفية إنشاء تطبيق Python داخل حاوية Docker.
المتطلبات الأساسية
لتنفيذ الخطوات الموضحة في هذا الدليل، ستحتاج إلى المكونات التالية:
-
نظام تشغيل Linux. تحقق من configuring your own Ubuntu VPS on CloudSigma.
-
تثبيت وتكوين أحدث إصدار من Docker. تعرف على المزيد حول installing Docker on Ubuntu.
حاويات Docker
عند تشغيل برامج مختلفة داخل نفس البيئة، يمكن أن تتعطل الأشياء (وستتعطل بالفعل). كلما أضفت المزيد من البرامج، أصبحت البيئة أقل استقرارًا. قد لا يكون هذا أمرًا بالغ الأهمية بالنسبة للمستخدمين العاديين. ومع ذلك، عندما يتعلق الأمر بالتطبيقات الحساسة للمهام، فقد تكون هناك عواقب وخيمة.
كلما زاد عدد التطبيقات التي يتم إدخالها في النظام، زادت مساحة سطح الهجوم. يمكن لتطبيق واحد مخترق أن يؤدي بسهولة إلى انهيار النظام بأكمله.
لحل هذه المشكلات، يمكننا استخدام حاويات Docker لعزل البرامج على مستوى البرمجيات (sandboxing):
-
سيكون للتطبيقات داخل الحاوية وصول محدود إلى الملفات.
-
لا يمكن للتطبيقات الموجودة داخل الحاويات رؤية العمليات الأخرى التي تعمل في النظام.
-
يمكن تخصيص كمية محددة من موارد الأجهزة للحاوية.
-
لا يتم كشف منافذ الشبكة الخاصة بالحاوية للخارج.
-
حزم متسقة لأي شيء تقريبًا عبر البيئات المحلية وبيئات الإنتاج.
للتوضيح، سنقوم ببناء خادم Python بسيط داخل حاوية Docker، وتحويل الحاوية إلى صورة (image)، ونشر الصورة داخل بيئة إنتاج وهمية.
الخطوة 1 – تكوين نظام الملفات
لاستضافة المشروع، أولاً، سنقوم بإنشاء دليل مخصص:
|
1 |
mkdir -pv python-server-container/ |
|
1 |
cd !$ |
داخل الدليل، قم بإنشاء دليل فرعي src لتخزين الكود الخاص بنا:
|
1 |
mkdir -pv src/ |
الخطوة 2 – بناء خادم Python
في هذه الخطوة، سنقوم بإنشاء خادم HTTP بسيط في Python. قم بإنشاء الملف server.py:
|
1 |
touch server.py |
افتحه في محرر نصوص:
|
1 |
nano server.py |

أدخل كود Python التالي:
|
1 2 3 4 5 6 7 8 9 10 11 |
from http.server import HTTPServer, SimpleHTTPRequestHandler def run(server_class=HTTPServer, handler_class=SimpleHTTPRequestHandler): """server entrypoint""" server_address = ("0.0.0.0", 8080) httpd = server_class(server_address, handler_class) print("starting server...") httpd.serve_forever() if __name__ == "__main__": run() |

هنا،
-
نحن نستخدم الفئة HTTPServer ونطلب معالجًا من مكتبة Python القياسية، مما يحافظ على بساطة البرنامج.
-
تبدأ الدالة run مثيلًا لـ HTTPserver.
-
كما توضح وسيطات server_address، فإن الخادم سيستمع إلى أي اتصال وارد على المنفذ 8080.
الآن، سنتحقق مما إذا كان الخادم يعمل كما هو متوقع. قم بتشغيل الخادم:
|
1 |
python3 server.py |
![]()
من شاشة طرفية جديدة، يمكننا استخدام curl لإرسال طلب إلى الخادم:
|
1 |
curl -iv localhost:8080 |

بدلاً من ذلك، يمكنك الوصول إلى الرابط في متصفح الويب:
|
1 |
http://localhost:8080 |
الخطوة 3 – إنشاء Dockerfile
يحتوي ملف Dockerfile على التعليمات اللازمة لإنشاء صورة Docker. يتم اتباع التعليمات الموجودة في الملف بالتتابع. تعرف على المزيد حول Dockerfile.
قم بإنشاء Dockerfile جديد لمشروعنا:
|
1 |
touch Dockerfile |
الآن، سنقوم بإدخال الأكواد اللازمة فيه. افتحه في محرر نصوص:
|
1 |
nano Dockerfile |
أدخل الكود التالي:
|
1 2 3 4 5 6 7 8 9 |
FROM python:latest ENV SRC_DIR /usr/bin/src/test_server/src COPY src/* ${SRC_DIR}/ WORKDIR ${SRC_DIR} ENV PYTHONUNBUFFERED=1 CMD ["python", "server.py"] |
هنا،
-
أي Dockerfile يجب أن يبدأ بـ FROM التوجيهي. في حالتنا، نقوم بالإعلان عن Python كقاعدة لصورة Docker.
-
التوجيه ENV SRC_DIR يحدد موقع دليل الحاوية.
-
التوجيه COPY ينسخ الملفات من دليل src الذي يستضيف حاليًا خادم Python.
-
المتغير PYTHONBUFFERED=1 يحدد أن Python ستقوم بطباعة وتسجيل المخرجات مباشرة إلى STDOUT. خلاف ذلك، لن يتم إرسال السجلات إلى أي مخزن مؤقت.
-
التوجيه CMD يحدد أمرًا افتراضيًا لتشغيله عند تنفيذ الحاوية. في هذه الحالة، نستخدم التوجيه لتشغيل خادم Python الخاص بنا.
الخطوة 4 – إنشاء صورة Docker
مع وجود Dockerfile جاهزًا، يمكننا الآن بناء الصورة. قم بتشغيل أمر Docker التالي لبدء العملية:
|
1 |
docker build . -t python_server |

هنا،
-
العلامة -t تُستخدم لتسمية صورة Docker الخاصة بنا كـ python_server.
-
سيقوم Docker بتنزيل جميع المكونات اللازمة ودمجها في صورة.
الخطوة 5 – تنفيذ الصورة
الصورة جاهزة للنشر. يمكننا تنفيذها باستخدام الأمر التالي:
|
1 |
docker run -p 8080:8080 python_server |

هنا، نقوم بتوجيه المنفذ 8080 من الجهاز المحلي إلى صورة Docker باستخدام العلامة -p .
يمكننا بسهولة التحقق مما إذا كان الخادم يعمل باستخدام curl:
|
1 |
curl -iv localhost:8080 |
الخطوة 6 – إنهاء الخادم
من الطرفية، اضغط على “Ctrl + C” لإنهاء عملية Docker:

الخطوة 7 – تصدير واستيراد صورة Docker
لدينا الآن صورة Docker صالحة للعمل تستضيف خادم Python الخاص بنا. بمساعدة ميزات التصدير والاستيراد في Docker، يمكننا نقلها إلى أي نظام آخر.
أولاً، تحقق من قائمة صور Docker في النظام الحالي:
|
1 |
docker images |

هدفنا هو صورة python_server لـ Docker التي أنشأناها للتو. سيقوم الأمر التالي بتصديرها كأرشيف TAR:
|
1 |
docker save python_server:latest > python_server.tar |

بعد نقل ملف python_server.tar إلى الجهاز المستهدف، استخدم الأمر التالي لاستيراد صورة Docker:
|
1 |
docker load < python_server.tar |
أفكار نهائية
في هذا الدليل، قمنا بشرح بناء صورة Docker من تطبيق Python. قمنا بإنشاء خادم ويب بسيط بلغة Python وبنينا صورة Docker منه. يمكن الآن نشر صورة Docker في أي بيئة وتوقع سلوك متسق.
هل أنت مهتم بمعرفة المزيد عن Docker؟ تحقق من الأدلة التالية:
حوسبة سعيدة!




التعليقات
لا توجد تعليقات بعد. كن أول من يعلق.