‫تتضمن متطلبات هذه المحاضرة معرفة الأساسيات حول ماهية
‫الحاوية والصورة في Docker وفهم الطبقات
‫، أو على الأقل أساسيات الطبقات. تعرف على بعض الأشياء حول Docker Hub.
‫ستكون هذه المحاضرة حول علامات الصور وكيفية تحميلها على Docker Hub.
‫هناك في الواقع الكثير من العلامات لأنها ليست بديهية كما قد تعتقد
‫عندما تبدأ في استخدامها لأول مرة. يجب أن يكونوا في الواقع بتنسيق معين من أجل العمل
‫مع سجل ، وتحديداً مع Docker Hub. ثم سأتحدث معك عن العلاقة بين العلامات
‫التي تم تخصيصها لصورك ومعرفات تلك الصور.
‫اذا هيا بنا نبدأ.
‫لنتحدث أولاً عن وضع العلامات. علامة صورة عامل ميناء - help. الصور ليس لها اسم تقنيًا على الرغم من أننا نشير إليها
‫على هذا النحو عندما نتحدث بشكل عرضي.
‫إذا قمنا بعمل docker
‫image ls ، فستلاحظ أنه لا يوجد عمود اسم.
‫إلى جانب معرف الصورة ، أي منا لن يتذكر هؤلاء ، أليس كذلك؟
‫علينا أن نشير إليهم بثلاث قطع مختلفة من المعلومات.
‫في هذه الشاشة لأمر الصورة ls ، نرى في الواقع اثنين منهم فقط. على اليسار ، نرى
‫المستودع ، ثم
‫نرى العلامة. يتكون المستودع فعليًا إما من اسم المستخدم
‫أو قيام المؤسسة بخفض المستودع.
‫نحن هنا نتعامل فقط مع صور المستودعات الرسمية
‫، لذلك سنرى فقط اسم المستودع الفعلي.
‫ذكرنا سابقًا أن الصور الخاصة التي تُعتبر رسمية هي الصور الوحيدة التي تحصل على
‫الحق في مجرد تسميتها باسم المستودع الخاص بهم ، وليس الاسم الفعلي لمستودع المؤسسة
‫المائل.
‫ولكن إذا انتقلنا إلى Docker Hub ، وقمت فقط بالبحث في mysql ، فسنجد أن هناك بالفعل
‫منظمة ، ليس فقط mysql الرسمي ، والذي يشار إليه فقط باسم mysql ، ولكن
‫هناك مؤسسة SQL مع خادم mysql ، والذي يبدو أنه شائع جدًا حيث أنه حصل على
‫أكثر من مليون عملية تنزيل. يبدو أن ما هو موجود هنا هو في الواقع نفس خادم
‫MySQL ولكن تم إنشاؤه بالفعل بواسطة فريق MySQL في Oracle.
‫إذا كنت أرغب بالفعل في تنزيله ، فستلاحظ هنا
‫على اليمين ، يجب أن أقوم بسحب خادم mysql / mysql-server. يمكنني بالفعل النقر فوق
‫زر النسخ وأنسخ هذا بتنسيق. سيتم في الواقع تنزيل هذه الصورة الفريدة القائمة على المؤسسة
‫، وإذا قمت بعمل صورة لرسو السفن مرة أخرى ، ستلاحظ أن اسم المستودع يتضمن اسم المؤسسة.
‫في حسابي على Docker Hub ، أنا معروف باسم bretfisher. يمكنك رؤيته من أعلى اليمين.
‫لذا ، إذا كنت سألقي نظرة على لوحة التحكم الخاصة بي وألقيت نظرة على صوري العامة ، على سبيل
‫المثال ، فلنلقِ نظرة على تطبيق nodemongoapp.
‫إذا كنت تريد تنزيل هذا ، فسوف أحتاج
‫إلى عمل docker pull bretfisher / nodemongoapp.
‫الآن بعد أن فهمنا كيف يتم تسمية المستودع ، ما الغرض من العلامة؟
‫العلامة ليست إصدارًا تمامًا وليست فرعًا تمامًا ، ولكنها تشبه إلى حد كبير علامات Git.
‫لذا فهو نوع من كليهما.
‫إنه حقًا مجرد مؤشر لالتزام صورة معينة ، ويمكن حقًا أن يكون أي شيء في هذا المستودع.
‫إذا عدنا إلى Docker Hub لمدة دقيقة ، وذهبنا إلى صورة mysql الرسمية ، فسترى في الصفحة الأولى أنها تحتوي على هذه
‫العلامات المختلفة. ما يحاولون قوله هنا هو أن الـ 8. 0. 0 و
‫8. 0 و 8 كلها علامات لنفس معرف الصورة.
‫إذا قمت بالتمرير لأعلى هنا ونظرت إلى زر العلامات ، فسأحصل على قائمة مفصلة كاملة بجميع العلامات المختلفة
‫التي قدموها إلى mysql.
‫لننتقل إلى Nginx ، وهو ما كنا نعمل عليه كثيرًا.
‫سنرى هنا أنها ليست مجرد أرقام ولكنها في الواقع أسماء أيضًا.
‫من المهم الإشارة إلى أن كل هذه الصور هي في الواقع نفس الصورة بالضبط
‫وأن Docker ذكي بما يكفي لمعرفة ذلك. أذهب إلى سطر الأوامر الخاص بي وأرى أن لدي بالفعل أحدث إصدار من nginx تم تنزيله.
‫إذا نظرت إلى صفحة الويب ، أرى أحدث علامة هنا ولكنها تسمى أيضًا mainline.
‫إذن ماذا لو فعلت عامل ميناء سحب nginx: mainline؟ ما يخبرنا به هذا هو أنه يعرف بالفعل أنه بناءً على معرف الصورة ، هذه الصورة موجودة
‫بالفعل في ذاكرة التخزين المؤقت الخاصة بي. الآن إذا قمت بعمل صورة docker ls مرة أخرى
‫، فسوف أرى اثنين من nginx مختلفين. ستلاحظ أن لديهم نفس معرف الصورة بالضبط لأنهم لم يتم تخزينهم مرتين في ذاكرة التخزين
‫المؤقت ، ومرة أخرى ، يعود هذا إلى الكثير من المدخرات. هذه العلامات هي مجرد تسميات
‫تشير إلى معرف الصورة الفعلي ويمكن أن يكون لدينا العديد منها يشير إلى نفس الرقم.
‫فكيف أصنع تسميات جديدة؟
‫حسنًا ، يمكنني إنشاء ملف Dockerfile الخاص بي وإنشاء صورتي المخصصة ، ولكن يمكننا
‫أيضًا إعادة وضع علامات على صور Docker الحالية حتى أتمكن من عمل علامة صورة
‫عامل ميناء nginx bretfisher / nginx. تنسيق هذا الأمر هو الصورة التي سأعطيها علامة جديدة
‫أولاً ، ثم العلامة الجديدة التي أريد منحها لها.
‫إذا قمت بعمل علامة صورة عامل إرساء - ساعدت مرة أخرى ، فقط لتحديث ذاكرتك ، فستظهر SOURCE_IMAGE
‫وعلامة اختيارية
‫ثم NEW_IMAGE علامة اختيارية.
‫لذلك إذا لم تحدد العلامة ، فستظل دائمًا افتراضيًا إلى الأحدث. الأحدث لا يعني دائمًا الأحدث لأنني تقنيًا يمكنني
‫أخذ بعض البرامج القديمة ووضع علامة عليها أحدث.
‫لا يوجد شيء مميز حوله ولكنه مجرد نوع من الافتراضي. حقًا ، أتمنى أن يطلقوا
‫عليه اسم افتراضي وليس أحدث.
‫إنه أمر محير بعض الشيء
‫، ولكن بشكل عام على Docker Hub ، خاصة عند استخدام الصور الرسمية ، يمكنك الوثوق
‫في أن الأحدث هو بشكل عام أحدث إصدار مستقر من البرنامج الذي تريد استخدامه.
‫لذلك دعونا نقوم بعمل صورة عامل
‫الإرساء مرة أخرى. لاحظ ما حدث.
‫لقد أضفت علامة جديدة إلى صورة حالية لم أصنعها.
‫يعرض نفس معرف الصورة ويتم
‫تسميته الآن باسم المستخدم الخاص بي وريبو جديد غير موجود حتى الآن على Docker Hub.
‫إذا ذهبنا ونظرنا إلى لوحة القيادة
‫الخاصة بي ، فليس لدي أي شيء يسمى bretfisher / nginx.
‫إذن ماذا لو قمت بدفع صورة عامل الإرساء ، على غرار دفع Git push ، bretfisher / nginx؟
‫مرفوض: تم رفض الوصول المطلوب إلى المورد.
‫لذلك من الواضح أنه حاول تحميل ما قمت بإنشائه للتو ، لقد حاول تحميل تلك العلامة ، لكنها منحتني حق الوصول
‫مرفوضًا.
‫هذا لأنني لم أسجل الدخول بالفعل.
‫لذلك إذا نظرت إلى عامل الإرساء - سترى أمر تسجيل الدخول والخروج. لم نستخدمها بعد.
‫لذلك بمجرد أن يكون لديك حساب Docker Hub المجاني الخاص بك ، يمكنك بالفعل تسجيل الدخول من تسجيل دخول عامل ميناء سطر الأوامر.
‫إذن ما فعله هذا في الواقع هو أنه تم كتابة هذا في ملف ، وهذا افتراضيًا في ملف التعريف الخاص بي ضمن cat. عامل ميناء / التكوين. json ، وقد قام بالفعل
‫بتخزين مفتاح مصادقة من شأنه أن يسمح لـ CLI الخاص بوحدة الإرساء المحلية بالوصول إلى Docker
‫Hub مثلي.
‫هذه نقطة مهمة سنتعرف عليها لاحقًا في الإنتاج وهي أنه أينما قمت بتسجيل
‫الدخول باستخدام Docker CLI ، بشكل افتراضي ، سيتم تخزين مفتاح المصادقة هذا لحسابك في ملف
‫تعريف هذا المستخدم.
‫لذا فقط كن على علم بذلك.
‫إذا كنت تستخدم جهازًا لا تثق به ، فاكتب عند الانتهاء فقط تسجيل خروج عامل الإرساء.
‫والآن بعد أن قمنا بتسجيل الدخول ، سأقوم بضرب السهم لأعلى لمحاولة دفع تلك الصورة مرة أخرى.
‫نعم.
‫لذلك يبدو أنه انتهى.
‫دعنا ننتقل إلى Docker Hub ونضغط على التحديث. ها هو ، bretfisher
‫/ nginx. مرة أخرى ، لم أضطر إلى إنشاء هذا من البداية لتحميله.
‫لقد قمت ببساطة بإعطاء علامة جديدة لصورة موجودة وعندما قمت بتحميلها ، قامت تلقائيًا
‫بإنشاء ريبو جديد بناءً على تلك العلامة.
‫بالطبع يمكنني ملء جميع المعلومات هنا ، وسترى أنه تم تعيينه افتراضيًا
‫على اسم العلامة الأحدث لأنني لم أحدد واحدًا. لذلك يمكنني في الواقع العودة والقيام بشيء السهم
‫لأعلى حتى أصل إلى العلامة الخاصة بي ويمكنني في الواقع إعطائها علامة مختلفة.
‫سنضيف علامة إضافية إلى نفس الصورة وسأطلق عليها اختبارًا. إذا قمنا بعمل docker image
‫ls ، فسترى
‫أن لدي الآن ثلاثة جميعهم بنفس معرف الصورة.
‫إذا قمت بعمل صورة عامل إرساء دفع bretfisher / nginx: اختبار ، وهذه المرة حددت الاختبار ، لاحظ كيف
‫تقول أن الطبقات موجودة بالفعل.
‫هذا جزء من معدل الادخار الرائع لدينا.
‫عندما نقوم بتنزيل الصور وتحميلها ، إذا كانت هناك طبقات موجودة بالفعل ، فلن تزعجك إعادة
‫تحميلها.
‫إذا عدنا وضربت تحديثًا ، فسترى أن لدي الآن علامة أخرى.
‫لكن بالطبع إذا قمت للتو بعمل صورة لرسو السفن ، فإننا نرى تمامًا كما رأينا أنه نفس معرف الصورة
‫ويعرف كلا جانبي هذا الاتصال ذلك. إذا كنت أرغب في أن يكون هذا مستودعًا خاصًا ، لأن هذه
‫ميزة مدعومة في Docker Hub ، فما قد أرغب في فعله على الأرجح هو إنشاء المستودع أولاً ،
‫وعندما قمت بإنشائه ، حددته ليكون خاصًا.
‫ثم عندما ضغطت عليه ، لن يكون الرمز متاحًا للعامة على الإنترنت.
‫واو ، هناك الكثير للصور وعلاماتها.
‫لذلك دعونا نجري مراجعة سريعة.
‫كما ترى ، يمكنك وضع علامة على أي شيء إلى حد كبير في الصور ولكن يجب أن تكون
‫بتنسيق معين للعمل مع Docker Hub. لا يمكنك فقط استدعاء شيء nginx ثم تحميله
‫لأنه لن يعمل ما لم يكن به معرّف حسابك أو معرّف مؤسستك أمامه.
‫ثم تحدثت عن كيف يمكنك بالفعل الحصول على العديد من العلامات لمعرف الصورة نفسه ، ولأنك تعيد وضع
‫علامة على صورة موجودة أو وضع علامة عليها بشكل مختلف ، فهذا لا يغير معرف الصورة هذا بالفعل.
‫تذكر أن أحدث علامة هي في الحقيقة مجرد علامة افتراضية.
‫لا يوجد شيء مميز بطبيعته حوله ، لكننا نفترض نوعًا ما على Docker Hub ، إنه
‫معيار هناك إلى حد كبير ، حيث يستخدم الأشخاص أحدث علامة كوسيلة للإشارة إلى أحدث
‫إصدار ثابت من صورتهم. لقد أوضحت لك كيفية تسجيل الدخول والخروج بسرعة من Docker Hub من CLI. تذكر أن هذا يخزن معرف الجلسة
‫في التكوين المحلي الخاص بك إذا كنت تستخدم جهاز Linux وتأكد من تسجيل الخروج لإزالته
‫إذا كنت تستخدم جهاز Linux مشتركًا
‫أو مضيفًا ، مثل الخادم. بعد ذلك ، مجرد تذكير ، إذا كنت تريد إنشاء صورة
‫Docker Hub خاصة ، فمن المحتمل أن تقوم بإنشاء المستودع أولاً قبل تحميله.