‫حسنًا ، مرحبًا ، أو هل يجب أن أقول whalecome لمستقبل إدارة البرامج باستخدام
‫Docker وأدوات الحاويات.
‫هذا الفيديو خاص بـ Docker.
‫كان لديه الكثير من الأدوات على مر السنين ، لكن هذا الفيديو يدور
‫حول الابتكارات الثلاثة الرئيسية التي بدأت في تطور Docker بالكامل للبرامج
‫في عام 2013 ، أي بشكل أساسي ثلاثة أشياء.
‫صورة Docker ، سجل Docker هذا ، ‫ثم حاوية Docker.
‫معظمنا ، عندما نفكر في Docker ، نفكر في الحاوية
‫، لكن هذه الابتكارات الثلاثة تسير معًا مثل الخبز والزبدة ويطلقون
‫عليه اسم Docker build build ship run.
‫هذه هي الخطوات الثلاث.
‫أن تأخذ في السابق غير الحاوية برنامج ، حوله إلى صورة Docker ، ضعه
‫في سجل ، احصل عليه إلى أي مكان تريد تشغيله فيه.
‫ثم أخيرًا أنشئ ‫حاوية منه.
‫في الواقع ، CNCF أو السحابة Native Computing Foundation ، والتي سنتحدث عن الكثير
‫من الأدوات حول جميع مقاطع الفيديو الخاصة بي.
‫تلك المنتجات والأدوات و يفترض سير العمل ، في معظم
‫الحالات ، أنك تستخدم ملف سير عمل الحاويات لبناء تشغيل السفن.
‫لذلك دعونا نكسر هذه و ‫بالضبط ما هم الثلاثة.
‫أول ما يصل صورة الحاوية.
‫وأحب أن أفكر في الأمر على أنه عالمي حزم التطبيقات ، ولدينا الكثير من مديري
‫الحزم على مر السنين.
‫في الحقيقة ، لقد فقدت العد ، وقد كنت متواجدًا منذ فترة
‫، من بين جميع مديري الحزم.
‫لكن لم يكن هناك أي شيء على الإطلاق يمكنني أن أذكر أن هذا كان عبر نظام تشغيل
‫ومنصة وتطبيقات حيادية اللغة ، مما يعني أنها ستعمل في كل مكان ، وهي تعمل على أي شيء ،
‫مثل طالما أنه يعمل بنظام التشغيل Linux أو Windows.
‫الآن دعنا نلقي نظرة سريعة على ملف Dockerfile ، وهو عبارة عن وصفة أو
‫مجموعة تعليمات لعمل حاوية image و Docker image و container image هي نفس المصطلح
‫لنفس الشيء.
‫في الواقع ، مواصفات صورة Docker كان شائعًا جدًا وأصبح الآن معيارًا
‫يُعرف باسم معيار صورة OCI.
‫حتى ترى مجموعة من التعليمات وكل يحتاج Dockerfile إلى FROM ، في البداية
‫، يمكننا البدء من صورة شخص آخر.
‫يمكننا الحصول على العديد من الصور من العديد من البداية ، لذلك سوف
‫ندخل في كل هذا التعقيد لاحقًا ، لكننا نبدأ به بايثون هنا ونعمل في طريقنا إلى الأسفل.
‫في الواقع ، نبدأ بهذه مثل طبقات كل واحد من هذه الأوامر
‫في Dockerfile ، تسمى أحيانًا مقطع بأحرف كبيرة.
‫بما في ذلك ، و FROM ، ثم RUN وشق طريقهم لأسفل لأنه
‫يعالجهم من من أعلى إلى أسفل ، سيتم إنشاء طبقات.
‫التي تتنقل بين الخوادم مثل كرات القطران وداخل تلك الطبقات
‫توجد ملفات وأدلة و أذونات الملفات ، وأحيانًا البيانات الوصفية التي
‫سنتطرق إليها لاحقًا.
‫عندما أبدأ في بناء هذه الصورة ، فإنها سيبدأ السطر الأول ويذهب للعثور على صورة
‫Python من Docker Hub أو أينما أخبرته للحصول على الصورة منه.
‫وهذا يشمل بايثون فقط ‫ثنائياتها ومكتباتها.
‫لا يحتوي على برامج تشغيل مضيفة أو Linux Kernel ، أو أي شيء خارج
‫ما تحتاجه Python لتشغيله.
‫إذا كانت Python بحاجة إلى OpenSSL ، فهذا يعني ‫المضمنة في تلك الطبقة من الصورة.
‫ثم يمكننا الانتقال إلى ‫السطر التالي من Dockerfile.
‫هذا أمر PIP لملف مثبت تبعية Python ، وهو يقوم بتثبيت
‫القارورة.
‫لذلك ستبدأ طبقة جديدة يضيف قارورة تمامًا كما تفعل مع
‫أمر تثبيت PIP عادي.
‫في الواقع ، ما يحدث في الخلفية هي أننا ننفذ حاويات
‫صغيرة سريعة لكل منها الطبقات أو تشغيل الأوامر أو القيام
‫بكل ما تريد القيام به بالداخل تلك الطبقات ، ثم تخزينها
‫كموقع مميز خاص بها.
‫على مضيف Linux ، هذا هو بناء هذا.
‫لذلك نحن نقوم بتكديس الطبقات هنا.
‫ثم ننتقل إلى التالي ‫سطر الأمر COPY.
‫WORKDIR هناك مجرد ملف تتغير البيانات الوصفية ، فهي فقط تغير
‫المواقع في نظام الملفات.
‫ليس مهما.
‫يقوم الأمر COPY بنسخ كود المصدر الخاص بنا من المضيف الذي نبني عليه في طبقته الخاصة
‫، مكدسة فوق الطبقات الأخرى.
‫هذه معا تشكل صورة ‫باستخدام الأمر Docker build.
‫هذه واحدة من تلك الأشياء عن Docker التي أصبحت سهلة الاستخدام
‫لأننا احتجنا فقط إلى بنية Docker البسيطة هذه أمر بأخذ مجموعة من الأشياء المعقدة
‫التي تحدث في Dockerfile وتشغيلها في صورة واحدة هي مجرد تطبيق
‫لدينا والاعتماديات فقط التي تحتاجها ولا شيء غير ذلك.
‫هذا هو الجزء الأول ‫من تشغيل سفينة البناء.
‫يجري Docker بناء.
‫بعد ذلك ، دعنا نتحدث عن التسجيل.
‫سجل Docker مخصص لـ ‫توزيع التطبيق.
‫كل نظام تغليف تطبيق له طريقة للحصول على هذه الحزم ولا يختلف
‫سجل Docker.
‫الآن هو معروف فقط باسم مواصفات توزيع OCI
‫أو مواصفات تسجيل OCI.
‫لذا فهو معيار مرة أخرى في الصناعة بأكملها لكيفية
‫نقل صور الحاويات.
‫وهي في كل مكان.
‫لكل سحابة واحدة.
‫Docker Hub هو الافتراضي و ‫ربما الأكثر شعبية.
‫جيثب لديه واحد.
‫Bitbucket و GitLab ، كلهم لديك سجلات صور خاصة بها ، ويمكنك تشغيل
‫سجلاتك الخاصة.
‫ربما هناك ما لا يقل عن عشرة مشاريع مجانية مفتوحة المصدر وبرامج مدفوعة
‫تتيح لك ذلك قم بتخزين صور Docker الخاصة بك فيها.
‫لذلك دعونا نوضح كيف يعمل ذلك.
‫أولاً.
‫لدينا صورتنا التي بنيناها للتو وتحتوي هذه الصورة على تجزئة SHA فريدة تحدد كل تلك الطبقات
‫معًا بطريقة يمكننا ضمانها ، إذا نظرنا إلى التجزئة على اثنين أنظمة
‫مختلفة ، يمكننا التأكد من أنها نفس الملفات بالضبط ، ملفات
‫نفس البيانات الوصفية التي أنشأناها للتو.
‫طبقات الصور هذه تسير معًا ‫وتوزيع أنفسهم.
‫يمكننا استخدام شيء مثل Docker ادفع لأخذ طبقات الصور هذه
‫ودفعها إلى السجل.
‫يمكنك استخدام واحد من العديد من السجلات ، مثل لقد ذكرت ، ولكن بمجرد وجودها
‫هناك ، يمكنك بعد ذلك الانتقال إلى جهاز آخر والقيام بملف سحب Docker ، والذي سيسحب نسخة متطابقة
‫من تلك الصورة لأسفل على ذلك الجهاز.
‫تمامًا كما بنينا ‫على الجهاز الأول.
‫وهذا هو أحد المبادئ الأساسية من Docker هو أننا قادرون
‫على أخذ البرنامج الذي صنعناه على جهاز واحد بكل تبعياتها وتشغيلها
‫بنفس الطريقة بالضبط على نظام آخر قد تكون توزيعات مختلفة تمامًا
‫من Linux أو Windows.
‫إذا كنت تستخدم نظام Linux وقمت بإنشاء ملف صورة Linux ، والتي يجب تشغيلها
‫على Linux نظرًا لأنها تقوم بتشغيل ثنائيات Linux ، إذا كان قمت ببنائه على CentOS
‫وقمت بتشغيله على Ubuntu ، سيكون بالضبط نفس التطبيق والتبعيات ، بغض النظر
‫عن هذا التوزيع.
‫أخيرًا ، نصل إلى Docker ‫الحاوية نفسها. بمجرد أن ننتهي من كل هذه
‫الخطوات لبناء ملف الصورة ، ووضعها في موقع ، يمكننا
‫الوصول إليها من خوادمنا و ثم تنزيله على خوادمنا.
‫يمكننا تشغيله.
‫لنتخيل أن لدينا ‫خادم يعمل بنظام Linux.
‫قد يكون يعمل بنظام Windows ، ولكن بتنسيق ‫في هذه الحالة ، سنركز فقط على Linux.
‫سيكون لديها عامل ميناء ‫يعمل في الخلفية.
‫هذا معروف باسم Docker Engine و المحرك الموجود على هذا الجهاز
‫الفردي سوف ينسق أو يدير كل الاختلاف الأشياء التي يجب أن تحدث لتنزيل الصور
‫، تحقق من أنها الشيء الدقيق الذي كان من المفترض تنزيله ، ثم
‫قم بتشغيله في النهاية.
‫ثم حصلنا على الصورة ، نحن فقط تم تنزيله باستخدام Docker pull ،
‫ثم سنقوم بتشغيل الأمر.
‫ليس من المهم حقًا أن لقد تعلمت الأمر حتى
‫الآن ، لكنه أمر تشغيل Docker.
‫هذا هو جزء التشغيل من سباق بناء السفن.
‫وفي هذه الحالة ، نقوم بتشغيل ذلك ‫تطبيق Python في حاويته الخاصة.
‫تُعرف هذه الحاوية باسم مساحة الاسم.
‫هذه هي ميزة Linux التي يمنع تشغيل التطبيق في هذه
‫الحاوية من الرؤية بقية نظام التشغيل.
‫يحصل على نظام الملفات الفارغ الخاص به ، وسيشمل فقط الملفات التي كانت
‫في تلك الصورة التي أنشأناها للتو.
‫سيحصل على عنوان IP الخاص به وعنوان IP الخاص به ‫بطاقة NIC الافتراضية وقائمة العمليات الخاصة بها.
‫ويبدو في الأساس مثل ‫نظامها الخاص بالداخل هناك.
‫ثم ، إذا قمنا بتشغيل Docker ، فركض الأمر مرة أخرى باستخدام
‫اسم الصورة أو تجزئة الصورة ، ثم نحصل على تطابق حاوية تعمل جنبًا إلى جنب.
‫الآن هاتان العمليتان ‫معزولين عن بعضهم البعض.
‫لذلك لا يمكن تطبيق Python في الحاوية ‫انظر تطبيق Python في الحاوية الثانية.
‫وإذا قمت بتغيير ملف بتنسيق الحاوية الثانية ، الحاوية الأولى
‫لن ترى هذا الملف افتراضيًا.
‫إذا أضفنا خادمًا ثانيًا بامتداد المثيل الثاني لمحرك Docker
‫قيد التشغيل وفعلنا نفس الشيء ، نحن يمكن أن يكون لديه إعداد متاح للغاية
‫مع تشغيل تطبيقنا عدة مرات من أجل التكرار أو الأداء الأفضل أو مهما
‫كان سبب ذلك لتشغيل أكثر من واحد منهم.
‫ستكون متطابقة من وجهة نظر نظام الملفات ، والتصاريح
‫والبيانات الوصفية.
‫الآن هناك الكثير مما يمكننا تعرف على هذه الأشياء ، وهذا هو السبب في أن الدورة
‫التدريبية التي أمتلكها طويلة جدًا الآن.
‫لكن هؤلاء لا يزالون الثلاثة الأشياء التي لم تتغير بعد أن تصورها
‫Docker لأول مرة.
‫فكرة بناء تشغيل السفينة هي أحد المبادئ الأساسية
‫للحاوية ، و Kubernetes ، Helm.
‫قمت بتسمية المشروع في السحابة الأصلية النظام البيئي ، وربما يفترض
‫أن لديك هذا النوع النموذجي من سير العمل إخراج تطبيقاتك من أيدي مطوريك
‫، إلى أنظمة الاختبار ، و ثم أخيرًا في خوادم الإنتاج.
‫إنها نفس الخطوات الثلاث.
‫لذا ، آمل أن يكون قد بدأ تغوص قليلاً حتى تفهم
‫سبب كون هذه هي المفاتيح الثلاثة المكونات ، حتى اليوم ، بعد سنوات
‫عديدة من اختراع كل هذا.
‫دعنا نتعرف على الخطوة التالية.