Docker Volumes and Docker Compose - Docker Series Part 4

في السلسلة دي، هنغطي أهم المفاهيم والأدوات والـ Commands اللي ليها علاقة بـ Docker بشكل بسيط وسهل عشان تقدر تستفيد منها بسرعة وتطبّقها في شغلك وهنتكلم المرادي عن الـ Docker Volumes والـ Docker Compose وأهم الـ Commands.
Docker Volumes and Docker Compose - Docker Series Part 4
Docker Volumes and Docker Compose - Docker Series Part 4

في هذه الصفحة

المقدمة

لو بتدور على طريقة سهلة وفعّالة عشان تدير بيها التطبيقات بتاعتك، فمفيش شك إن Docker هيكون من أهم الأدوات اللي هتساعدك لتحقيق ده. Docker هو أداة قوية جدًا تقدر تعملها بيها حاويات Containers، ودي زي بيئة معزولة بتشغل فيها التطبيقات بتاعتك.

وفي السلسلة دي، هنغطي أهم المفاهيم والأدوات والـ Commands اللي ليها علاقة بـ Docker بشكل بسيط وسهل عشان تقدر تستفيد منها بسرعة وتطبّقها في شغلك.


Docker Volumes

A diagram of a server

Description automatically generated

هي Storage بخزن عليها ال Data الخاصة بال docker فلما بعمل container الداتا بتاعته بتتخزن فين ؟ في حاجه اسمها docker area داخل ال file system الخاص بال docker 

مسار الـ Volumes هو : /var/lib/docker/volumes

وطريقه ال volume افضل طريقه لتخزين الداتا الخاصة بال docker ليه ؟ لانك لو حذفت ال container مثلا عن طريق الخطا الداتا بتتحذف معه وبالتالي لو كانت الداتا متخزنه داخل volume الداتا هتفضل موجوده داخل ال volume دا 

[root@mostata ~ ] docker volume create first-volume

بعمل create ل volume جديد اسمه first-volume 

[root@mostata ~ ] docker volume ls

بعمل list بكل ال volume ال عندي 

[root@mostata ~ ] docker run -it -d –name con1 -v first-volume:/con1 ubuntu

بعمل container جديد اسمه cont1 من ال image ال اسمها ubuntu و -v بحددله ال volume بتاعه وهو ال اسمه  first-volume وداخل ال volume بعمل folder خاص بال container دا اسمه con1 ب اسم ال container 

[root@mostata ~ ] docker inspect con1

بعرض معلومات عن ال container ال اسمه cont1 

A computer screen shot of white text

Description automatically generated

من ضمن المعلومات دي ال mount ودي بيكون فيها المعلومات المتعلقة بال volume الخاصة بال container دا وهنا بيقولي ان ال container بيستخدم ال volume ال اسمه first-volume وال destination بتاعه ال هو ال folder الخاص بال container دا  داخل ال volume دا اسمه cont1 

طيب وليكن دلوقت عاوز اخزن داتا معينه داخل ال volume دا هعمل أي  ؟

1- هدخل داخل ال container 

[root@mostata ~ ] docker exec -it con1 bash

2- هعمل ls لل files ال عندي 

A black background with blue text

Description automatically generated

هلاقي ال con1 ال  هو ال folder ال داخل ال volume بتاعي 

3- هعمل الداتا ال انا محتاج اخزنها داخل ال volume

A screen shot of a computer code

Description automatically generated

كدا ال directory ال انا عملته دا اتخزن داخل ال volume ال اسمه first-volume 

طيب هنعمل container جديد ونخليه يعمل connect علي نفس ال volume ونشوف هنقدر نشوف الداتا دي ولا لا

1- هعمل container جديد وال folder ال داخل ال volume هيكون اسمه con2

[root@mostata ~ ] docker run -it -d –name con2 -v first-volume:/con1 ubuntu

2- هداخل داخل ال container 

[root@mostata ~ ] docker exec -it con2 bash

3- هعمل ls 

هلاقي ال folder ال اسمه con2 ال هو أصلا في ال volume 

4- لو عملت ls هلاقي ال directory ال انا عملته في ال container الأول 

A black background with white text

Description automatically generated

لان ال 2 container بيشاوروا علي نفس ال volume 

[root@mostata ~ ] docker inspect first-volume

لو عاوز اشوف معلومات اكتر عن ال volume ال اسمه first-volume 


Docker Compose

الـ Docker Compose هي عبارة عن Tools بقدر من خلالها اعمل Defining و Runing لاكثر من Container في نفس الوقت عن طريق لغة ال YAML وال بيتم هو اني بكتب Script YAML في ال Config file وال Docker Compose بيقرا الملف دا وينفذ الي فيه سواء Container او اكثر

A screen shot of a computer

Description automatically generated

Kubernetes vs Docker Swarm vs Docker Compose vs Docker

الـ Kubernetes: هو عبارة عن Container orchestration بمعني اني بقدر اعمل Config لاكثر من Container علي اكثر من Host لكن بشكل أوسع واكبر من Docker Swarm

الـ Docker Swarm: هو Container orchestration بمعني اني بقدر اعمل Config لاكثر من Container علي اكثر من Host

الـ Docker Compose: هنا بقدر اعمل Config لاكثر من Container لكن ع نفس ال Host وكلهم بيتم التعامل معهم ع انهم Single Service

الـ Docker: هو containerization platform ويمكن بسهوله اعمل Create-deploy-run لل App داخل ال Docker اقدر اشغله عن أي OS في ال Cloud or on-prem ولكن ال Docker بيتعامل مع Container واحد فقط داخل Host واحد فقط


Docker Extension

هو يعتبر Third Party داخل ال Docker بتحسن وتسهل استخدام ال GUI داخل ال Docker Desktop 

A screenshot of a computer

Description automatically generated

مقارنة سريعة بين ال CMD وENTRYPOINT

الـ CMD: بيعمل overwrite وينفذ اخر جمله فقط

A black background with white text

Description automatically generated
A black background with white text

Description automatically generated

بينما الـ ENTRYPOINT:

مش بيعمل overwrite بيطبع الجملتين القديمة والجديدة

A black background with white text

Description automatically generated
A black background with white text

Description automatically generated

اشترك الآن بنشرة اقرأ-تِك الأسبوعية

لا تدع أي شيء يفوتك. واحصل على أحدث المقالات المميزة مباشرة إلى بريدك الإلكتروني وبشكل مجاني!