في هذه الصفحة
المقدمة
لو بتدور على طريقة سهلة وفعّالة عشان تدير بيها التطبيقات بتاعتك، فمفيش شك إن Docker هيكون من أهم الأدوات اللي هتساعدك لتحقيق ده. Docker هو أداة قوية جدًا تقدر تعملها بيها حاويات Containers، ودي زي بيئة معزولة بتشغل فيها التطبيقات بتاعتك.
وفي السلسلة دي، هنغطي أهم المفاهيم والأدوات والـ Commands اللي ليها علاقة بـ Docker بشكل بسيط وسهل عشان تقدر تستفيد منها بسرعة وتطبّقها في شغلك.
Docker Volumes
هي 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
من ضمن المعلومات دي ال 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 ال عندي
هلاقي ال con1 ال هو ال folder ال داخل ال volume بتاعي
3- هعمل الداتا ال انا محتاج اخزنها داخل ال volume
كدا ال 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 الأول
لان ال 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 او اكثر
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
مقارنة سريعة بين ال CMD وENTRYPOINT
الـ CMD: بيعمل overwrite وينفذ اخر جمله فقط
بينما الـ ENTRYPOINT:
مش بيعمل overwrite بيطبع الجملتين القديمة والجديدة