. NET حاوية صور الآن نشرها على سجل حاوية مايكروسوفت

نقوم الآن بنشر صور حاويات .NET Core إلى Microsoft Container Registry (MCR) . لقد أجرينا أيضًا تغييرات أخرى على الصور التي ننشرها ، الموضحة في هذا المنشور.


هام: ستحتاج إلى تغيير عبارات FROM في ملفات Dockerfile وأوامر docker pull Dockerfile نتيجة لهذه التغييرات. 3.0 المراجع تحتاج إلى تغيير الآن. يمكن تغيير معظم 1.x و 2.x الأعراف مع مرور الوقت. تم تحديد مخطط العلامات الجديد في هذا المنشور ويتم توفيره في repo microsoft-dotnet-core ، وهو موطننا الجديد على Docker Hub.


ملخص التغييرات:


  • يتم نشر صور .NET Core الآن إلى Microsoft Container Registry.
  • سيستمر نشر التحديثات على Docker Hub ، من أجل .NET Core 1.x و 2.x.
  • سيتم نشر .NET Core 3.0 فقط على MCR.
  • لم تعد صور Nano Server 2016 مدعومة أو منشورة.

صورة

هذا المقال في مدونتنا

سجل حاويات Microsoft (MCR)


تقوم فرق Microsoft الآن بنشر صور الحاوية إلى MCR . هناك سببان رئيسيان لهذا التغيير:


  • يمكننا إنشاء MCR كمصدر رسمي لصور الحاوية التي توفرها Microsoft ، ومن ثم تعزيز هذه الصور وجمعها بسهولة إلى خدمات حاويات متعددة ، مثل Docker Hub و Red Hat OpenShift.
  • يمكننا استخدام Microsoft Azure كشبكة توزيع محتوى عالمي (CDN) لتقديم صور حاويات مقدمة من Microsoft من مواقع أقرب إليك. هذا يعني أن صورك في الحاوية ستكون أسرع وحسّنت من الموثوقية في العديد من الحالات.

من منظور معماري ، MCR هي خدمة متماثلة عالميًا تتعامل مع طلبات بيان الصورة. يستخدم خدمة Azure CDN لطلبات طبقة الصورة. لا يمكن ملاحظة هذا الفصل مع docker pull ، ولكن من السهل أن ترى عندما تقوم بفحص صور .NET Core مع حليقة . يساعد استخدام الموارد المكررة عالميًا على إظهار التزامنا بتوفير تجربة رائعة لمستخدمي الحاويات في جميع أنحاء العالم.


الاستمرار في دعم Docker Hub


سنستمر في الحفاظ على صفحات إعادة تصميم Docker Hub حتى تتمكن من اكتشاف صور .NET Core والتعرف عليها. ستواصل عناوين URL الخاصة بموقع Docker Hub على الويب التي استخدمتها في Microsoft repos ، وتُرسل إلى المواقع المحدثة على Docker Hub.


ستستخدم MCR وترى كواجهة تخزين لصور حاويات Microsoft ، لكن الطريقة الأساسية التي تتعرف بها على صور وعلامات حاوية Microsoft ستكون عبر محور حاويات أو موقع ويب ، والذي سيظل بالنسبة للعديد من المستخدمين هو Docker Hub.


سيتم الحفاظ على صور Docker Hub الحالية كما هي. في الواقع ، سوف نستمر في تحديث repo microsoft / dotnet الموجودة ، كما هو موضح لاحقًا في هذا المنشور.


.NET Core Images موجودة على MCR


بدأنا نشر الصور على MCR في فبراير 2019 ، بدءًا من إعادة إصدار NET Core "nightly" . في أوائل شهر مارس ، قمنا بنقل الريبو الصافي .


في Docker Hub ، كان لدينا ريبو واحد كبير للغاية يقدم أربعة أنواع من الصور لأربعة توزيعات لنظام التشغيل وثلاثة أنواع من وحدات المعالجة المركزية. تم إنشاء هذه المجموعة الواسعة من العلامات لأسماء علامات طويلة جدًا وملفات README أطول. قررنا أن نغتنم هذه الفرصة لإعادة معامل .NET Core في عدة repos ، واحدة لكل نوع صورة. لقد أضفنا أيضًا "repo product" الذي يجمع كل وحدات repos الخاصة بنا معًا.


تتبع repos الجديد:



ملاحظة: إن .NET Core 2.0 في نهاية العمر الافتراضي (EOL) ، وبالتالي لن يكون متاحًا على MCR ، فقط على Docker Hub ، كصور غير مدعومة. ستحتاج إلى الانتقال إلى .NET Core 2.1 وهو إصدار دعم طويل الأجل (LTS) .


تحديث .NET الأساسية صورة العلامات


توضح الأمثلة التالية كيف تبدو سلاسل علامات docker pull الجديدة في .NET Core. يتم إظهارها docker pull ، ولكن يجب استخدام نفس السلاسل في ملفات Dockerfile FROM .


هذه الأمثلة كلها تستهدف .NET Core 2.1 ، ولكن يتم استخدام نفس النمط عبر أي إصدار .NET Core معتمد:


  • SDK: docker pull mcr.microsoft.com/dotnet/core/sdk:2.1
  • ASP.NET Core Runtime: docker pull mcr.microsoft.com/dotnet/core/aspnet:2.1
  • .NET Runtime: docker pull mcr.microsoft.com/dotnet/core/runtime:2.1
  • .NET Core Runtime Dependencies: docker pull mcr.microsoft.com/dotnet/core/runtime-deps:2.1

يوضح المثال التالي كيف يبدو عبارة FROM بالنسبة إلى repos MCR الجديد ، باستخدام dotnet/core/sdk كمثال:


 FROM mcr.microsoft.com/dotnet/core/sdk:2.1 

إذا كنت تستخدم Alpine ، على سبيل المثال ، يتم توسيع العلامات بسهولة لتشمل Alpine ، باستخدام الريبو dotnet/core/runtime كمثال:


 FROM mcr.microsoft.com/dotnet/core/runtime:2.1-alpine 

يمكنك إلقاء نظرة على عينات .NET Core Docker لمعرفة كيفية استخدام سلاسل العلامات في الممارسة.


الدعم المستمر ل Docker Hub


لقد تم نشر الصور على Docker Hub لمدة ثلاث أو أربع سنوات. من المحتمل وجود الآلاف (إن لم يكن الملايين) من البرامج النصية و Dockerfiles التي تمت كتابتها وتتوقع صور حاوية .NET على Docker Hub. كما ذكر أعلاه ، سوف تستمر هذه القطع الأثرية في العمل كما هي.


ننشر أشكال متعددة من العلامات التي توفر مستويات مختلفة من الراحة والاتساق. تركز هذه الاختلافات على درجة تحديد أرقام الإصدارات ، من المحدد تمامًا إلى غير الموجود على الإطلاق. توضح علامات المثال التالية الأشكال المختلفة للعلامات ، من الأقل إلى الأكثر تحديدًا:


  • latest
  • 2.2-runtime
  • 2.1.6-sdk

سنستمر في نشر الصور لنماذج العلامات الأولين (الإصدارات الأقل من الإصدار والجزءين) لمدى الحياة المدعومة من الإصدارات المرتبطة. لن ننشر أي إصدارات جديدة من ثلاثة أجزاء (مثل المثال الأخير) إلى Docker Hub ، ولكن فقط إلى MCR. نتوقع أن تستخدم معظم البرامج النصية وملفات Dockerfile أيًا من النموذجين الأولين من العلامات ، أو يتم تحديثها يدويًا لاعتماد علامات ثلاثية الأجزاء على بعض الإيقاع المنتظم. إذا تم تحديثها يدويًا ، فيمكن تحديثها يدويًا لسحب الصور من MCR.


. NET كور 3.0 صور


يحدث الانتقال إلى MCR بشكل جزئي من خلال إصدار .NET Core 3.0 ، مما أعطانا خيار جعل .NET Core 3.0 MCR فقط. هذا يجعل منهجنا لـ MCR لـ .NET Core 3.0 مختلفًا عن الإصدارات الأخرى المدعومة. قمنا في البداية بنشر صور .NET Core 3.0 Preview إلى Docker Hub. بدءًا من .NET Core 3.0 Preview 3 ، لن يتم نشر صور .NET Core 3.0 إلا على MCR. من المهم أن ينتقل مستخدمو .NET Core 3.0 إلى MCR قريبًا.


فيما يلي أمثلة لسلاسل علامات .NET Core 3.0 ، لمساعدتك على الانتقال إلى MCR:


  • SDK: docker pull mcr.microsoft.com/dotnet/core/sdk:3.0
  • ASP.NET Core Runtime: docker pull mcr.microsoft.com/dotnet/core/aspnet:3.0
  • .NET Runtime: docker pull mcr.microsoft.com/dotnet/core/runtime:3.0
  • تبعيات وقت تشغيل .NET Core: docker pull mcr.microsoft.com/dotnet/core/runtime-deps:3.0

يوضح المثال التالي شكل بيان FROM الخاص بـ .NET Core 3.0 على MCR ، باستخدام الريبو dotnet/core/runtime كمثال:


 FROM mcr.microsoft.com/dotnet/core/runtime:3.0 

ستظل صور .NET Core 3.0 Preview 1 و Preview 2 متاحة على Docker Hub ، للحصول على علامات إصدار من ثلاثة أجزاء. بالنسبة إلى Preview 1 و Preview 2 ، قمنا أيضًا بنشر علامات إصدار من جزأين ، مثل 3.0-sdk و 3.0-runtime . لقد شعرنا بالقلق من أن بعض المستخدمين سوف يرون علامات الإصدار المكونة من جزأين لـ .NET Core 3.0 على Docker Hub ويعتقدون أن هذه الصور مدعومة وسيتم تحديثها في المستقبل. لن يكونوا كذلك. لتخفيف ذلك ، قمنا بحذف علامات الإصدار المكونة من جزئين لـ 3.0 على Docker Hub. يتيح لنا هذا الأسلوب التواصل بوضوح خلال فترة المعاينة التي يحتاجها الجميع للانتقال إلى MCR للحصول على صور 3.0 في أسرع وقت ممكن. نعتذر إذا كان هذا التغيير قد أثر سلبًا عليك.


تستخدم Visual Studio 2019 معاينات العلامات 3.0 جزءين التي تم حذفها. يجب على المستخدمين تحديث ملفات Dockerfile الخاصة بهم لضمان بناء مشاريعهم بشكل صحيح. لقد قدمنا نموذج Dockerfile يوفر عبارات FROM الصحيحة لمشاريع .NET Core 3.0 ASP.NET Core في Visual Studio 2019.


نانو خادم 2016 صور


لم يعد فريق Windows يعتمد Nano Server 2016 ولم يعد يقوم بنشر صور حاوية محدثة لهذا الإصدار. نتيجة لذلك ، توقفنا عن نشر صور Nano Server 2016 إلى Docker Hub و MCR.


يؤثر هذا على علامات صور .NET Core بعدة طرق مختلفة:


  • لم تعد علامات البيان (AKA " multi-arch ") تتضمن إدخالًا لـ Nano Server 2016. وهذا يعني أن علامات البيان مثل 2.1-sdk لن تعمل على Windows Server 2016 أو Nano Server 2016 أو Windows 10 1607. إذا كنت بحاجة الاستمرار في استخدام الصور المستندة إلى Nano Server 2016 (على الرغم من أنها لم تعد معتمدة) ، ستحتاج إلى استخدام علامات تتضمن إصدار Windows (هذه علامات غير واضحة) ، على سبيل المثال mcr.microsoft.com/dotnet/core/runtime:2.1-nanoserver-sac2016 .
  • يتم دعم صور .NET Core 2.x و 3.0 ومتاحة لجميع الإصدارات المدعومة من خادم Nano Server بدءًا من الإصدار 1709. وهذا يعني أنه يمكن استخدام العلامات الظاهرة 2.x و 3.0 على Windows 10 والإصدار 1709+ و Windows Server ، الإصدار 1709+. يمكنك أيضًا استخدام علامات غير واضحة لتلك الإصدارات أيضًا.
  • ننتج فقط صور Nano Server ، الإصدار 1809 لـ .NET Core 1.x. في السابق ، أنتجنا فقط صور Nano Server ، إصدار 2016 لـ .NET Core 1.x. كنت قد استخدمت إما علامة البيان (مثل 1.1-runtime أو 1.1 ) أو علامة nanoserver-sac2016 لسحب تلك الصور. يمكنك سحب .NET Server 1.x Nano Server الجديد ، إصدار 1809 من الصور إما باستخدام علامة بيان أو علامة nanoserver-1809 . هذه العلامات مدعومة فقط على نظام التشغيل Windows 10 والإصدار 1809 ونظام التشغيل Windows Server 2019

لا تزال صور .NET Core لـ Nano Server 2016 متاحة على Docker Hub و MCR ولن يتم حذفها. يمكنك الاستمرار في استخدامها لكنها غير مدعومة ولن تحصل على تحديثات جديدة. إذا كنت بحاجة إلى القيام بذلك وعلامات البيان المستخدمة مسبقًا ، مثل 1.1-sdk ، يمكنك الآن استخدام علامات MCR التالية (متغيرات Docker Hub متشابهة):


  • 2.2.2-nanoserver-sac2016 ، 2.2-nanoserver-sac2016
  • 2.1.8-nanoserver-sac2016 ، 2.1-nanoserver-sac2016
  • 1.1.11-nanoserver-sac2016 ، 1.1-nanoserver-sac2016
  • 1.0.14-nanoserver-sac2016 ، 1.0-nanoserver-sac2016

يرجى ملاحظة أن .NET Core 1.x ستفقد الدعم في 27 يونيو 2019 . نوصي بأن ينتقل مستخدمي .NET Core 1.x إلى .NET Core 2.1.


في DockerCon 2019


نرسل بعض أعضاء الفريق إلى DockerCon 2019 . اتصل بنا @ dotnet@microsoft.com إذا كنت ترغب في الاجتماع والتحدث عن كيفية استخدامك .NET و Docker معًا. نود أن نسمع عن طريقتك وأي تحديات تواجهها ، أو تغييرات ترغب في إجرائها.


لقد حضرنا DockerCon منذ بضع سنوات ونستمتع دائمًا بالعرض. إنها فرصة جيدة لمعرفة الطرق الجديدة التي يستخدمها الأشخاص للحاويات وأيضًا الميزات الجديدة القادمة. على سبيل المثال ، ما زلنا ننتظر الدعم الرسمي لـ BuildKit . إنها الميزة التي نريد أن نراها أكثر جزءًا من مجموعة الميزات الافتراضية لـ Docker.


إغلاق


نحن مستمرون في تحسين تجربة استخدام صور حاويات .NET Core من Microsoft. سيكون نشر صور حاويات .NET Core إلى MCR تحسينًا نظرًا لتكرار النسخ المتماثل لـ MCR بشكل عام.


صور حاوية .NET Framework غير متوفرة بعد على MCR. سننقلهم إلى MCR قريبًا.


راجع استخدام .NET و Docker Together إذا كنت تريد معرفة المزيد حول استخدام Docker.

Source: https://habr.com/ru/post/ar444010/


All Articles