يعد دوكر Docker أداة فعالة لأتمتة تثبيت تطبيقات لينكس داخل حاويات للبرامج، للاستفادة الكاملة من إمكاناته، يجب تشغيل كل مكون من مكونات التطبيق في حاويته الخاصة. وبالنسبة للتطبيقات المعقدة التي تحوي الكثير من المكونات، يمكن أن يصبح تنسيق جميع الحاويات لبدء التشغيل والاتصال وإيقاف التشغيل معًا أمرًا غير عملي.
توصل مجتمع دوكر إلى حل شائع يسمى Fig، والذي يسمح باستخدام ملف YAML واحد لتنظيم جميع حاويات دوكر وتكويناتها. حيث أصبح هذا شائعًا جدًا لدرجة أن مجتمع دوكر قرر جعل Docker Compose يعتمد على مصدر Fig، والذي تم إلغاؤه الآن. يتيح Docker Compose للمستخدمين تنظيم عمليات حاويات دوكر، بما في ذلك بدء وإيقاف التشغيل وإعداد الربط بين الحاويات ووحدات التخزين.
في هذا الدليل، ستقوم بتثبيت أحدث إصدار من Docker Compose لمساعدتك في إدارة التطبيقات متعددة الحاويات على خادم دبيان 10.
المتطلبات الأساسية
لكي تتمكن من المتابعة مع هذه المقالة، ستحتاج إلى:
- خادم دبيان 10 ومستخدم عادي (non-root) بامتيازات sudo. حيث يشرح هذا الإعداد الأولي للخادم مع دليل دبيان 10 التعليمي كيفية إعداد ذلك.
- دوكر مثبّت بإرشادات من الخطوة الأولى والخطوة الثانية لكيفية تثبيت واستخدام دوكر على دبيان 10
ملاحظة: على الرغم من أن المتطلبات المسبقة تعطي تعليمات لتثبيت دوكر على دبيان 10، فإن أوامر docker
في هذه المقالة يمكن أن تعمل على أنظمة تشغيل أخرى طالما أن دوكر مثبت.
الخطوة الأولى - تثبيت Docker Compose
على الرغم من أنه يمكن تثبيت Docker Compose من مستودعات Debian الرسمية، إلا أن هناك عدة إصدارات ثانوية ظهرت بعد الإصدار الأخير، لذلك في هذا الدليل ستقوم بتثبيته من مستودع GitHub الخاص بــدوكر. يختلف الأمر التالي قليلاً عن الأمر الذي ستجده في صفحة الإصدارات. فباستخدام الراية
-o لتحديد ملف الإخراج أولاً بدلاً من إعادة توجيه الإخراج، هذه الصيغة تتجنب حدوث خطأ "رفض الإذن" الذي يحدث عند استخدام sudo
.
تحقق من الإصدار الحالي، وإذا لزم الأمر قم بتحديثه في الأمر التالي:
$ sudo curl -L https://github.com/docker/compose/releases/download/1.25.3/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
بعد ذلك سنقوم بتعيين الأذونات:
$ sudo chmod +x /usr/local/bin/docker-compose
ثم سنتحقق من نجاح التثبيت عن طريق التحقق من الإصدار:
$ docker-compose --version
سيؤدي ذلك إلى طباعة النسخة التي قمنا بتثبيتها:
$ docker-compose version 1.25.3, build d4d1b42b
الخطوة الثانية - تشغيل حاوية مع Docker Compose
يتضمن سجل دوكر العام Docker Hub، صورة Hello World للتوضيح والاختبار. حيث توضح الحد الأدنى من التكوين المطلوب لتشغيل حاوية باستخدام Docker Compose: ملف YAML الذي يستدعي صورة واحدة. سنقوم بإنشاء أصغر ملف إعدادت ممكن لتشغيل حاوية hello-world
الخاصة بنا.
أولاً ، قم بإنشاء دليل لملف YAML وقم بالتحويل إليه:
$ mkdir hello-world cd hello-world
ثم قم بإنشاء ملف YAML:
$ nano docker-compose.yml
ضع المحتويات التالية في الملف docker-compose.yml واحفظ الملف واخرج من محرر النصوص:
$ my-test: image: hello-world
يتم استخدام السطر الأول في ملف YAML كجزء من اسم الحاوية. ويحدد السطر الثاني الصورة التي سيتم استخدامها لإنشاء الحاوية. فعندما نقوم بتنفيذ الأمر docker-compose up
، سيبحث عن صورة محلية بالاسم الذي حددناه، ألا وهو hello-world
. بعد ذلك سنقوم بحفظ الملف والخروج منه.
يمكنك النظر يدويًا إلى الصور الموجودة على نظامنا باستخدام الأمر docker images
:
$docker images
عندما لا تكون هناك صور محلية على الإطلاق، يتم عرض عناوين الأعمدة فقط:
REPOSITORY TAG IMAGE ID CREATED SIZE
الآن ، أثناء وجودك في مجلد ~/hello-world
، نفّذ الأمر التالي:
$docker-compose up
في المرة الأولى التي تقوم فيها بتنفيذ هذا الأمر، إذا لم تكن هناك صورة محلية باسم hello-world، فسوف يسحبها Docker Compose من مستودع Docker Hub العام:
Pulling my-test (hello-world:)... latest: Pulling from library/hello-world 9db2ca6ccae0: Pull complete Digest: sha256:4b8ff392a12ed9ea17784bd3c9a8b1fa3299cac44aca35a85c90c5e3c7afacdc Status: Downloaded newer image for hello-world:latest . . .
بعد سحب الصورة، يقوم docker-compose
بإنشاء حاوية تقوم بإرفاق وتشغيل برنامج hello، والذي بدوره يؤكد أن التثبيت يعمل:
. . . Creating helloworld_my-test_1... Attaching to helloworld_my-test_1 my-test_1 | my-test_1 | Hello from Docker. my-test_1 | This message shows that your installation appears to be working correctly. my-test_1 | . . .
ثم يطبع شرحًا لما فعله:
To generate this message, Docker took the following steps: my-test_1 | 1. The Docker client contacted the Docker daemon. my-test_1 | 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. my-test_1 | (amd64) my-test_1 | 3. The Docker daemon created a new container from that image which runs the my-test_1 | executable that produces the output you are currently reading. my-test_1 | 4. The Docker daemon streamed that output to the Docker client, which sent it my-test_1 | to your terminal.
تعمل حاويات دوكر فقط عندما يكون الأمر نشطًا، لذلك بمجرد الانتهاء من تشغيل [hello]، تتوقف الحاوية. وبالتالي عندما ننظر إلى العمليات النشطة ستظهر عناوين الأعمدة، لكن لن يتم إدراج حاوية hello-world
كونها لا تعمل:
$docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
يمكنك الاطلاع على معلومات الحاوية، وهذا ما ستحتاجه في الخطوة التالية باستخدام الراية -a
. يعرض هذا الأمر جميع الحاويات وليس فقط الحاويات النشطة:
$docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 06069fd5ca23 hello-world "/hello" 35 minutes ago Exited (0) 35 minutes ago hello-world_my-test_1
و يعرض هذا المعلومات التي ستحتاج إليها لإزالة الحاوية عند الانتهاء منها.
الخطوة الثالثة - إزالة الصورة (اختياري)
لتجنب استخدام مساحة قرص غير ضرورية، سنقوم بإزالة الصورة المحلية. وللقيام بذلك، سنحتاج إلى حذف جميع الحاويات التي تشير إلى الصورة باستخدام الأمر docker rm
، متبوعًا إما بمعرف الحاوية CONTAINER ID
أو الاسم NAME
. في المثال التالي، نستخدم معرف الحاوية CONTAINER ID
من الأمر docker ps -a
الذي قمنا بتشغيله للتو. وتأكد من استبدال معرف الحاوية:
$docker rm 06069fd5ca23
بمجرد إزالة جميع الحاويات التي تشير إلى الصورة، يمكننا إزالة الصورة:
$docker rm 06069fd5ca23
الخلاصة
لقد قمت بتثبيت Docker Compose على دبيان 10، واختبرت التثبيت عن طريق تشغيل مثال Hello World، وأزلت صورة الاختبار والحاوية.
بينما أكد مثال Hello World التثبيت، فإن هذا التكوين الأساسي لا يُظهر إحدى الفوائد الرئيسية لـ Docker Compose – وهي القدرة على إحضار مجموعة من حاويات دوكر للأعلى وللأسفل في نفس الوقت.
ترجمة -وبتصرف- للمقال How To Install Docker Compose on Debian 10 لصاحبيه Brian Hogan و Kathleen Juell
أفضل التعليقات
لا توجد أية تعليقات بعد
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.