English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Docker Swarm هو أداة إدارة مجموعات Docker. إنه يتحول مجموعة من أجهزة Docker إلى وحدة فيروسية واحدة من Docker. يقدم Docker Swarm API القياسية، يمكن لكل الأدوات التي كانت تتعامل مع وحدة Docker أن تستخدم Swarm لتوسيع نطاقها بسهولة إلى عدة أجهزة.
الأدوات التي يدعمها تشمل而无限于以下 البنود:
Dokku
Docker Compose
Docker Machine
Jenkins
كما يظهر في الصورة، تتكون مجموعة swarm من عقدة إدارة (manager) وعقدة عمل (work node).
مدير swarmتقوم بإدارة الكتلة بأكملها، بما في ذلك تكوين الكتلة وإدارة الخدمات وكل الأعمال المتعلقة بالكتلة.
عقدة عمل: وهي النقطة المتاحة في الصورة، وتقوم بتنفيذ الخدمات المطلوبة لتنفيذ المهام (task).
في هذا المثال، يتم شرح Docker Machine و virtualbox، تأكد من أن جهازك قد تم تثبيت virtualbox.
إنشاء جهاز docker:
$ docker-machine create -d virtualbox swarm-manager
توليد مجموعة swarm، الجهاز الذي يتم فيه التوليد هو عقدة إدارة الكتلة.
$ docker-machine ssh swarm-manager $ docker swarm init --advertise-addr 192.168.99.107 # IP هذا هو IP المخصص للجهاز عند إنشائه.
المخرجات أعلاه تثبت أن التوليد قد تم بنجاح. يجب نسخ الخط التالي واستخدامه عند إضافة عقدة عمل:
docker swarm join --token SWMTKN-1-4oogo9qziq768dma0uh2j0z0m5twlm10iynvz7ixza96k6jh9p-ajkb6w7qd06y1e33yrgko64sk 192.168.99.107:2377
يتم إنشاء جهازين مباشرة هنا، swarm-worker1 و swarm-worker2.
ادخل إلى جهازين مختلفين، وحدد إضافة إلى الكتلة التي تم إنشاؤها في الخطوة السابقة، هنا سيتم استخدام النص المكرر من الخطوة السابقة.
مخرجات البيانات أعلاه توضح أن الإضافة كانت ناجحة.
الشكل السابق، بسبب طول النص المكرر في الخطوة السابقة، سيتم قطعه تلقائيًا، في الواقع الأمر الذي يتم تنفيذه في الصورة هو كما يلي:
docker@swarm-worker1:~$ docker swarm join --token SWMTKN-1-4oogo9qziq768dma0uh2j0z0m5twlm10iynvz7ixza96k6jh9p-ajkb6w7qd06y1e33yrgko64sk 192.168.99.107:2377
الدخول إلى العقدة الإدارية، وتنفيذ: docker info يمكنك عرض معلومات الشبكة الحالية.
$ docker info
من خلال الرسم بالدائرة الحمراء، يمكنك معرفة أن هناك ثلاث عقدات تعمل في الشبكة الحالية، واحدة منها هي العقدة الإدارية.
ملاحظةأي عملية تتعلق بادارة الشبكة تتم على العقدة الإدارية.
في هذا المثال، سنقوم بإنشاء خدمة تُدعى helloworld على عقدة عمل، حيث يتم تخصيصها عشوائيًا لعدة عقدة عمل:
docker@swarm-manager:~$ docker service create --replicas 1 --name helloworld alpine ping docker.com
تحقق مما إذا كانت الخدمة تعمل على أي عقدة، يمكنك رؤية أنها تعمل على عقدة swarm-worker1 حاليًا:
docker@swarm-manager:~$ docker service ps helloworld
تحقق من معلومات التركيب الخاصة بخدمة helloworld:
docker@swarm-manager:~$ docker service inspect --pretty helloworld
سنقوم بتوسيع خدمة helloworld المذكورة أعلاه إلى عقدتين.
docker@swarm-manager:~$ docker service scale helloworld=2
يمكنك رؤية أنه تم توسيعه من عقدة واحدة إلى عقدتين.
docker@swarm-manager:~$ docker service rm helloworld
تحقق مما إذا كان تم حذفه:
في الأمثلة التالية، سنقوم بشرح كيفية ترقية إصدار redis إلى إصدار أعلى.
إنشاء نسخة 3.0.6 من redis.
docker@swarm-manager:~$ docker service create --replicas 1 --name redis --update-delay 10s redis:3.0.6
تحديث Redis بشكل متدرج.
docker@swarm-manager:~$ docker service update --image redis:3.0.7 redis
من خلال الرسم يمكن ملاحظة أن إصدار Redis قد تم تحديثه من 3.0.6 إلى 3.0.7، مما يعني أن الخدمة قد تم تحديثها بنجاح.
للنظر في جميع العقد:
docker@swarm-manager:~$ docker node ls
يمكنك رؤية أن جميع العقد هي Active ويمكنها استقبال توزيع المهام الجديدة.
إيقاف العقدة swarm-worker1:
ملاحظةالنوع: swarm-worker1 يتحول إلى Drain. لن يؤثر ذلك على خدمات المجموعة، ولكن لن يستقبل العقدة swarm-worker1 مهام جديدة، مما يؤدي إلى انخفاض قدرة المجموعة على تحمل الحمل.
يمكنك إعادة تنشيط العقدة باستخدام الأمر التالي:
docker@swarm-manager:~$ docker node update --availability active swarm-worker1