لقد أعادت عملية الـ Dockerisation تعريف عملية النشر والأتمتة في صناعة البرمجيات. ومنذ نشأتها، Docker جاهدًا باستمرار لجعل النشر التلقائي سلسًا. تقنية الحاويات لا تتيح فقط التطوير السريع للتطبيقات والكفاءة، بل توفر أيضًا الوقت والجهود الشاقة. إن الميزات التي لا تضاهى مثل تنسيق وتعريف وتشغيل التطبيقات متعددة الحاويات معًا تجعل Docker خيارًا مفضلاً للمطورين.
حاويات وصور Docker
بينما تتعمق في فهم Docker بشكل أكبر، من الضروري تنشيط معلوماتك بالأساسيات. قد يكون فهم كيفية عمل Docker أمرًا صعبًا إذا لم تكن لديك خبرة سابقة في العمل معه. في هذا القسم، سنقوم بتعريف بعض المفاهيم الأساسية للمبتدئين. إذا كنت تعتقد أنك مألوف بهذه المفاهيم، فلا تتردد في تخطيها والانتقال إلى القسم التالي. يمكنك أيضًا إلقاء نظرة على دليلنا الشامل الذي يشرح مفاهيم Docker الأساسية.
-
صور Docker
صور Docker هي عبارة عن مجموعة من الملفات للقراءة فقط. بمجرد إنشاء صور Docker، لا يمكنك تعديلها، على الرغم من أنه يُسمح بحذفها. نحن نستخدم صورة Docker لإنشاء حاوية واحدة أو أكثر من حاويات Docker وفقًا لاحتياجاتنا. للتحقق من عدد الصور التي تعمل في نظامك، استخدم الأمر:
|
1 |
$docker images |
عندما تقوم بسحب الصور من سجل بعيد مثل Docker Hub، فإنك تقوم بتنزيل الملفات والمجلدات. لسحب صورة، استخدم الأمر:
|
1 |
$docker pull (name of the image) |
-
حاويات Docker
صور Docker هي المخطط الأساسي لحاويات Docker. من الناحية الفنية، حاوية Docker هي نسخة من صورة Docker. تخيل، إذا كانت صورة Docker بمثابة الأب، فإن حاوية Docker هي الابن. على عكس صور Docker التي يمكنك إنشاؤها مرة واحدة، يمكنك إنشاء حاويات متعددة باستخدام صورة واحدة. للتحقق من قائمة الصور التي تعمل في نظامك، استخدم الأمر:
|
1 |
$docker ps |
لسحب حاوية، استخدم الأمر التالي:
|
1 |
$docker pull (name of the container) |
-
كيف تعمل صور وحاويات Docker
تعمل صور وحاويات Docker جنبًا إلى جنب لإطلاق العنان لإمكانيات Docker. يتم بناء حاوية واحدة باستخدام صورة Docker من خلال أمر التشغيل. عند إنشاء حاوية Docker، يتم إنشاء طبقة جديدة تُعرف باسم طبقة الحاوية (Container Layer). تحتوي الطبقة التي تم إنشاؤها حديثًا على التطبيق وتبعياته. كل حاوية تقوم بإنشائها تحتوي على طبقة حاوية مختلفة للقراءة/الكتابة، وأي تغييرات يتم إجراؤها في حاوية Docker تنعكس تلقائيًا على طبقة الحاوية. تذكر، إذا اخترت حذف حاوية، فستفقد أيضًا طبقة الحاوية.
مرحبًا بك في Docker Compose
Docker Compose هي أداة لإدارة الحاويات تتيح لك تكوين وتنسيق جميع حاويات Docker الخاصة بك في ملف YAML واحد. أصبح بدء التشغيل، والإيقاف، وإنشاء الروابط ووحدات التخزين بين الحاويات أسهل بكثير باستخدام هذه الأداة.
-
ماذا يفعل Docker Compose؟
ببساطة، يسهل Docker Compose المهام المعقدة من خلال القضاء على التعارضات والمشكلات التنظيمية. فهو يتيح للمستخدمين إدارة حاويات Docker المختلفة بشكل مركزي. وبعبارة أخرى، بدلاً من وجود جميع الخدمات في حاوية واحدة كبيرة، يقوم Docker Compose بتقسيم الخدمة إلى خدمات متعددة بحيث يمكن للمستخدمين الوصول إليها وإدارتها دون عناء.
في هذا الدليل، سنرشدك خلال خطوات تثبيت الإصدار الحالي من Docker Compose لإدارة التطبيقات متعددة الحاويات على CentOS 7. وسنتطرق أيضًا إلى بعض الأوامر الأساسية التي تحتاجها لاستخدام البرنامج بنجاح.
-
كيفية استخدام Docker Compose
استخدام Docker Compose سهل للغاية، حتى بالنسبة للمبتدئين. دعنا نرى العملية المكونة من ثلاث خطوات في Docker Compose:
1. البناء: أولاً، قم ببناء الصور في ملف Dockerfile وفقًا لاحتياجات مشروعك، أو ربما اسحبها من السجل.
2. التعريف: بعد ذلك، تحتاج إلى تحديد جميع الخدمات المكونة في ملف compose.yml .
3. التشغيل: بعد تحديد المكونات، حان وقت التشغيل باستخدام أمر docker-compose .
المتطلبات الأساسية
قبل أن نمضي قدمًا في تثبيت Docker Compose على خادم CentOS الخاص بك، تأكد من أن لديك:
- مستخدم ليس جذرًا (non-root) ولديه صلاحيات sudo على خادم CentOS 7.
- مثبت عليه Docker. يرجى الرجوع إلى هذا البرنامج التعليمي حول كيفية تثبيت وتشغيل Docker على Ubuntu 18.04.
أنت الآن جاهز تمامًا. بعد ذلك، اتبع الخطوات أدناه لتثبيت Docker Compose على CentOS 7.
الخطوة 1: تثبيت Docker Compose
للحصول على أحدث إصدار من Docker Compose، اتبع التعليمات الواردة في وثائق Docker وقم بتنزيل الملفات الثنائية من مستودع GitHub لـ Docker’s. تحقق من أن لديك أحدث إصدار من البرنامج عن طريق تشغيل الأمر أدناه:
|
1 |
sudo curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose |
لتشغيل الملف الثنائي، قم بتعيين الأذونات أدناه:
|
1 |
sudo chmod +x /usr/local/bin/docker-compose |
بعد ذلك، ابحث عن إصدارك للتحقق مما إذا كان التثبيت ناجحًا:
|
1 |
$docker-compose --version |
سيقوم الكود أدناه بطباعة الإصدار المثبت:
يمكنك بعد ذلك تشغيل مثال “Hello World” باستخدام Docker Compose الذي قمت بتثبيته.
الخطوة 2: استخدام Docker Compose لتشغيل حاوية
توجد صورة “Hello World” في Docker Hub، وهو سجل Docker العام، والذي يمكن استخدامه للتوضيح والاختبار. يوضح هذا كيفية تشغيل حاوية باستخدام Docker Compose بأقل قدر ممكن من التكوين. أولاً، تحتاج إلى إنشاء دليل لملف YAML الخاص بنا:
|
1 |
$mkdir hello-world |
بعد ذلك، انتقل إلى هذا الدليل:
|
1 |
$cd hello-world |
ثم، باستخدام محرر النصوص المفضل لديك، قم بإنشاء ملف YAML. في هذا البرنامج التعليمي، سنستخدم Vi:
|
1 |
$vi docker-compose.yml |
اضغط على i للوصول إلى وضع الإدخال، ثم اكتب هذا في الملف:
|
1 2 |
my-test: image: hello-world |
في اسم الحاوية، سيتم دمج السطر الأول. يوجه السطر الثاني البرنامج إلى الصورة التي يجب استخدامها لإنشاء الحاوية. docker-composeup سيبحث عن صورة محلية باسم hello-world للتحقق مما إذا كانت متاحة عند كتابة الأمر. للخروج من وضع الإدخال، اضغط على ESC. ثم أدخل :x واضغط على ENTER لحفظ الملف والخروج منه. يمكن استخدام الأمر docker images للتحقق يدويًا من وجود صور على جهازك:
|
1 |
$ sudo docker images |
تظهر عناوين الأعمدة فقط عندما لا تكون هناك أي صور محلية على الإطلاق:
لإنشاء الحاوية، قم بتشغيل هذا الأمر بينما لا تزال في دليل /hello-world:
|
1 |
$sudo docker-compose up |
عند تشغيل الأمر لأول مرة وعدم وجود صورة محلية باسم hello-world، سيتم تنزيلها من مستودع Docker Hub:
للتأكد من أن التثبيت يعمل، يقوم Docker Compose بسحب الصورة، وبناء حاوية، وإرفاقها، وتنفيذ برنامج hello :
بعد ذلك، يتم عرض مطبوعة لوصف ما تم القيام به:
عندما hello يكمل مهمته، سيتم إيقاف تشغيل الحاوية ولن يتم تشغيل الأمر بعد الآن في الحاوية. سيتم عرض عناوين الأعمدة عند النظر إلى العمليات النشطة. ومع ذلك، لن يتم إدراج حاوية hello-world لأنها لا تعمل حاليًا:
|
1 |
$sudo docker ps |
لرؤية جميع الحاويات، وليس فقط الحاويات الحالية، استخدم العلامة -a :
|
1 |
$sudo docker ps -a |
الآن بعد أن جربت تشغيل حاوية، يمكنك المضي قدمًا لتعلم بعض أوامر Docker Compose الأساسية.
الخطوة 3: أوامر Docker Compose
لبدء استخدام Docker Compose، سيتناول هذا القسم الأوامر الأساسية التي توفرها أداة docker-compose. docker-compose هو أمر يعمل على أساس كل دليل على حدة. من خلال إنشاء دليل واحد لكل حاوية وملف docker-compose.yml واحد لكل دليل، يمكنك تشغيل العديد من مجموعات حاويات Docker على نفس الكمبيوتر.
حتى الآن، كنت تقوم بتشغيل Docker Compose بمفردك. يمكنك إيقافه عن طريق الضغط على Ctrl-C. يتيح ذلك لنافذة الطرفية عرض رسائل تصحيح الأخطاء. ومع ذلك، يُنصح بتشغيل docker-compose كخدمة عند العمل في بيئة الإنتاج. يمكن استخدام الخيار -d كطريقة بسيطة لتحقيق ذلك:
|
1 |
docker-compose up -d |
الآن، docker-compose يتفرع إلى الخلفية. يمكن إدارة مجموعة حاويات Docker الخاصة بك (سواء كانت متوقفة أو قيد التشغيل) باستخدام الأمر التالي:
|
1 |
$sudo docker-compose ps -a |
سيتم الإبلاغ عن State الخاصة بالحاوية على أنها Exited إذا كانت متوقفة، كما هو موضح في المثال أدناه:
ستعرض الحاوية قيد التشغيل حاليًا ما يلي:
|
1 2 3 4 |
الاسم الأمر الحالة المنافذ --------------------------------------------------------------- nginx_nginx_1 nginx -g daemon off; Up 443/tcp, 80/tcp |
يمكنك إنهاء جميع حاويات Docker قيد التشغيل في نفس الدليل الذي يحتوي على ملف docker-compose.yml الذي استخدمته لبدء مجموعة Docker:
|
1 |
$docker-compose stop |
ملاحظة: إذا كنت بحاجة إلى إيقاف التشغيل بشكل أكثر قسرية، فإن docker-compose kill متاح أيضًا.
في بعض الحالات، قد تتمكن حاويات Docker من حفظ بياناتها القديمة بالداخل. استخدم الأمر rm لإزالة جميع الحاويات من مجموعة الحاويات الخاصة بك إذا كنت تريد البدء من الصفر:
|
1 |
$docker-compose rm |
سيؤدي تشغيل أي من هذه الأوامر من دليل آخر غير الدليل الذي توجد فيه حاوية Docker وملف .yml إلى ظهور رسالة خطأ:
|
1 2 3 4 5 6 |
خطأ: يمكن'لا العثور على مناسب تكوين ملف في هذا الدليل أو أي أب. هل أنت في الـصحيح دليل? المدعومة أسماء الملفات: docker-compose.yml, docker-compose.yaml |
في هذا القسم، قمنا بتغطية أساسيات التعامل مع الحاويات باستخدام Docker Compose. كما تمت المناقشة، في القسم التالي يمكنك الوصول إلى نظام ملفات Docker وتشغيل الأوامر من موجه الأوامر داخل الحاوية إذا كنت بحاجة إلى تحكم إضافي في حاوياتك.
الخطوة 4: الوصول إلى نظام ملفات حاوية Docker
من الممكن تشغيل موجه أوامر في حاوية والوصول إلى نظام ملفات الحاوية باستخدام docker exec، وهي أداة سطر أوامر. على سبيل المثال، قم بتشغيل “Hello World” وانظر كم من الوقت يستغرق اكتمال الأمر docker exec . من أجل هذا البرنامج التعليمي، يمكن استخدام صورة Nginx من Docker Hub . قم بإنشاء دليل جديد باسم nginx والانتقال إليه:
|
1 2 |
mkdir ~/nginx cd ~/nginx |
يجب أن يكون لديك الآن ملف docker-compose.yml، والذي يمكنك فتحه في محرر نصوص:
|
1 |
vi docker-compose.yml |
ثم، في الملف، أضف ما يلي:
|
1 2 |
nginx: image: nginx |
لقد حان الوقت لإغلاق التطبيق. لبدء تشغيل حاوية Nginx في الخلفية، استخدم الأمر التالي:
|
1 |
$sudo docker-compose up -d |
سيقوم Docker Compose بتنزيل صورة Nginx وتشغيل الحاوية في الخلفية. للمتابعة، ستحتاج إلى إدخال CONTAINER ID الخاص بالحاوية. يمكنك عرض جميع الحاويات قيد التشغيل حاليًا باستخدام الأمر التالي:
|
1 |
$sudo docker ps |
سترى ما يلي:
إذا كنت تريد تعديل نظام الملفات داخل هذه الحاوية، باستخدام docker exec، فستستخدم المعرف الفريد للحاوية (في هذه الحالة، f139d0d78ca7) لإنشاء غلاف (shell) داخل الحاوية:
|
1 |
$sudo docker exec -it f139d0d78ca7 /bin/bash |
يمكن فتح طرفية تفاعلية باستخدام الخيار -t، بينما يوفر /bin/bash للحاوية غلاف bash. هذا هو موجه bash الذي ستراه للحاوية بعد ذلك:
|
1 |
root@b86b6699714c:/# |
داخل الحاوية الخاصة بك، ستجد موجه أوامر. ستؤدي إعادة تشغيل الحاوية إلى الكتابة فوق أي تغييرات أجريتها ما لم تكن تعمل في دليل تم حفظه كجزء من وحدة تخزين البيانات. إذا كنت معتادًا على العمل مع أدوات سطر أوامر Linux، فيجب أن تعلم أن معظم صور Docker يتم إنتاجها باستخدام أبسط عمليات تثبيت Linux.
الخاتمة
لقد أرشدناك خلال خطوات تثبيت الإصدار الحالي من Docker Compose لإدارة التطبيقات متعددة الحاويات على CentOS 7. إن قدرة Docker Compose على تشغيل وإيقاف عدد كبير من الحاويات في نفس الوقت هي أمر مثير للإعجاب. الانتقال من القوالب إلى التطبيقات يستغرق دقائق معدودة. لذلك، إذا كان عملك يتضمن تشغيل حاويات متعددة في وقت واحد، فإن الاستمرار في استخدام Docker Compose يعد خيارًا رائعًا. ومع ذلك، فهو ليس حلاً يناسب الجميع. يمكنك أيضًا العثور على بعض الخيارات الأفضل، اعتمادًا على احتياجاتك الخاصة، على سبيل المثال، Kubernetes.
لمزيد من استكشاف قوة Docker Compose، يمكنك الرجوع إلى هذه البرامج التعليمية من مدونتنا:
- نشر Laravel و Nginx و MySQL باستخدام Docker Compose
- كيفية تثبيت وتكوين Docker Compose على Ubuntu 20.04
حوسبة سعيدة!






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