Images de conteneur .NET Core désormais publiées dans le registre de conteneurs Microsoft

Nous publions maintenant des images de conteneur .NET Core dans Microsoft Container Registry (MCR) . Nous avons également apporté d'autres modifications aux images que nous publions, décrites dans cet article.


Important: vous devrez modifier les instructions FROM dans les fichiers Dockerfile et docker pull commandes Dockerfile suite de ces modifications. Les références 3.0 doivent être modifiées maintenant. La plupart des utilisations 1.x et 2.x peuvent être modifiées au fil du temps. Le nouveau schéma de balises est décrit dans cet article et est fourni au repo microsoft-dotnet-core , notre nouvelle maison sur Docker Hub.


Résumé des changements:


  • Les images .NET Core sont désormais publiées dans Microsoft Container Registry.
  • Les mises à jour continueront d'être publiées sur Docker Hub, pour .NET Core 1.x et 2.x.
  • .NET Core 3.0 ne sera publié que sur MCR.
  • Les images de Nano Server 2016 ne sont plus prises en charge ni publiées.

image

Cet article dans notre blog .

Registre à conteneurs Microsoft (MCR)


Les équipes Microsoft publient désormais des images de conteneurs sur MCR . Il y a deux raisons principales à ce changement:


  • Nous pouvons faire de MCR la source officielle des images de conteneurs fournies par Microsoft, puis promouvoir et syndiquer plus facilement ces images vers plusieurs services de conteneurs, comme Docker Hub et Red Hat OpenShift.
  • Nous pouvons utiliser Microsoft Azure comme réseau de distribution de contenu mondial (CDN) pour fournir des images de conteneurs fournies par Microsoft à partir d'emplacements plus proches de vous. Cela signifie que les tirages d'images de vos conteneurs seront plus rapides et auront une fiabilité améliorée dans de nombreux cas.

D'un point de vue architectural, MCR est un service répliqué à l'échelle mondiale qui gère les demandes de manifeste d'image. Il utilise le service Azure CDN pour les demandes de couche d'image. Cette séparation n'est pas observable avec le docker pull , mais elle est facile à voir lorsque vous inspectez des images .NET Core avec curl . L'utilisation de ressources répliquées à l'échelle mondiale démontre notre engagement à fournir une expérience exceptionnelle aux utilisateurs de conteneurs à travers le monde.


Continuer à prendre en charge Docker Hub


Nous continuerons à gérer les pages de dépôt Docker Hub afin que vous puissiez découvrir et découvrir les images .NET Core . Les URL du site Web Docker Hub que vous avez utilisées pour les dépôts Microsoft continueront de fonctionner et seront transmises aux emplacements mis à jour sur Docker Hub.


Vous utiliserez et verrez MCR comme le backend de stockage pour les images de conteneur Microsoft, MAIS la principale façon dont vous en apprendrez sur les images et les balises de conteneur Microsoft se fera via un hub de conteneur ou un site Web, qui pour de nombreux utilisateurs continuera d'être Docker Hub.


Les images Docker Hub existantes seront conservées telles quelles. En fait, nous continuerons à mettre à jour le dépôt Microsoft / Dotnet existant, comme décrit plus loin dans ce billet.


Les images .NET Core sont sur MCR


Nous avons commencé à publier des images sur MCR en février 2019, en commençant par le repo «nightly» .NET Core . Début mars, nous avons également déplacé le référentiel .NET Core .


Sur Docker Hub, nous avions un très gros dépôt qui servait quatre types d'images pour quatre distributions de système d'exploitation et trois types de CPU. Ce large ensemble de balises a été conçu pour des noms de balise très longs et des fichiers README encore plus longs. Nous avons décidé de saisir cette occasion pour re-factoriser .NET Core en plusieurs référentiels , un pour chaque type d'image. Nous avons également ajouté un «référentiel de produits» qui regroupe tous nos référentiels.


Les nouveaux dépôts suivent:



Remarque: .NET Core 2.0 est en fin de vie (EOL), il ne sera donc pas disponible sur MCR, uniquement sur Docker Hub, en tant qu'images non prises en charge. Vous souhaiterez passer à .NET Core 2.1 qui est une version de support à long terme (LTS) .


Mettre à jour les balises d'image .NET Core


Les exemples suivants vous montrent à quoi ressemblent les nouvelles chaînes de balises docker pull pour .NET Core. Ils sont affichés en tant que docker pull , mais les mêmes chaînes doivent être utilisées dans les fichiers Dockerfile pour les instructions FROM .


Ces exemples ciblent tous .NET Core 2.1, mais le même modèle est utilisé dans toutes les versions de .NET Core prises en charge:


  • 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 Core Runtime: docker pull mcr.microsoft.com/dotnet/core/runtime:2.1
  • Dépendances d'exécution de .NET Core: docker pull mcr.microsoft.com/dotnet/core/runtime-deps:2.1

L'exemple suivant montre à quoi ressemble une instruction FROM pour le nouveau dotnet/core/sdk MCR, en utilisant le dotnet/core/sdk comme exemple:


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

Si vous utilisez Alpine, par exemple, les balises sont facilement étendues pour inclure Alpine, en utilisant le dotnet/core/runtime comme exemple:


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

Vous pouvez consulter les exemples Docker .NET Core pour voir comment les chaînes de balises sont utilisées dans la pratique.


Prise en charge continue de Docker Hub


Nous publions des images sur Docker Hub depuis trois ou quatre ans. Il existe probablement des milliers (sinon des millions) de scripts et de fichiers Docker qui ont été écrits et qui attendent des images de conteneur .NET sur Docker Hub. Comme indiqué ci-dessus, ces artefacts continueront de fonctionner tels quels.


Nous publions plusieurs formes de balises qui offrent différents niveaux de commodité et de cohérence. Ces différences dépendent du degré de spécification des numéros de version, de complètement spécifié à pas du tout présent. Les exemples de balises suivants illustrent les différentes formes de balises, de la plus petite à la plus spécifique:


  • latest
  • 2.2-runtime
  • 2.1.6-sdk

Nous continuerons de publier des images pour les deux premiers formulaires de balises (versions sans version et en deux parties) pour la durée de vie prise en charge des versions associées. Nous ne publierons aucune nouvelle version en trois parties (comme le dernier exemple) sur Docker Hub, mais uniquement sur MCR. Nous prévoyons que la plupart des scripts et des fichiers Dockerfile utilisent l'une des deux premières formes de balises ou sont mis à jour manuellement pour adopter des balises en trois parties sur une cadence régulière. S'ils sont mis à jour manuellement, ils peuvent être mis à jour manuellement pour extraire des images du MCR.


Images .NET Core 3.0


Le passage à MCR se fait à mi-chemin dans la version .NET Core 3.0, qui nous a donné la possibilité de rendre .NET Core 3.0 MCR uniquement. Cela rend notre approche pour MCR pour .NET Core 3.0 différente des autres versions prises en charge. Nous avons initialement publié des images d'aperçu .NET Core 3.0 sur Docker Hub. À partir de .NET Core 3.0 Preview 3 , les images .NET Core 3.0 ne seront publiées que sur MCR. Il est important que les utilisateurs de .NET Core 3.0 passent bientôt à MCR.


Voici des exemples de chaînes de balises .NET Core 3.0 pour vous aider à passer à 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 Core Runtime: docker pull mcr.microsoft.com/dotnet/core/runtime:3.0
  • Dépendances du docker pull mcr.microsoft.com/dotnet/core/runtime-deps:3.0 .NET Core: docker pull mcr.microsoft.com/dotnet/core/runtime-deps:3.0

L'exemple suivant montre à quoi ressemble une instruction FROM pour .NET Core 3.0 sur MCR, en utilisant le dotnet/core/runtime comme exemple:


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

Les images .NET Core 3.0 Preview 1 et Preview 2 resteront disponibles sur Docker Hub, pour les balises de version en trois parties. Pour Aperçu 1 et Aperçu 2, nous avons également publié des balises de version en deux parties, comme 3.0-sdk et 3.0-runtime . Nous craignions que certains utilisateurs voient ces balises de version en deux parties pour .NET Core 3.0 sur Docker Hub et pensent que ces images sont prises en charge et seront mises à jour à l'avenir. Ils ne le seront pas. Pour atténuer cela, nous avons supprimé les balises de version en deux parties pour 3.0 sur Docker Hub. Cette approche nous permet de communiquer clairement pendant la période de prévisualisation que tout le monde doit passer au MCR pour les images 3.0 dès que possible. Nous nous excusons si ce changement vous a affecté négativement.


Les aperçus de Visual Studio 2019 utilisent les balises 3.0 en deux parties qui ont été supprimées. Les utilisateurs doivent mettre à jour leurs fichiers Dockerfile pour s'assurer que leurs projets se construisent correctement. Nous avons fourni un exemple de Dockerfile qui fournit les instructions FROM correctes pour les projets .NET Core 3.0 ASP.NET Core dans Visual Studio 2019.


Images de Nano Server 2016


Nano Server 2016 n'est plus pris en charge par l'équipe Windows et ils ne publient plus d'images de conteneurs mises à jour pour cette version. Par conséquent, nous avons cessé de publier des images de Nano Server 2016 sur Docker Hub et MCR.


Cela affecte les balises d'image .NET Core de différentes manières:


  • Les balises manifestes (AKA « multi-arch ») n'incluent plus d'entrée pour Nano Server 2016. Cela signifie que les balises manifestes comme 2.1-sdk ne fonctionneront plus sur Windows Server 2016, Nano Server 2016 ou Windows 10 1607. Si vous avez besoin pour continuer à utiliser des images basées sur Nano Server 2016 (même si elles ne sont plus prises en charge), vous devrez utiliser des balises qui incluent la version Windows (ce sont des balises non manifestes), par exemple mcr.microsoft.com/dotnet/core/runtime:2.1-nanoserver-sac2016 .
  • Les images .NET Core 2.x et 3.0 sont prises en charge et disponibles pour toutes les versions prises en charge de Nano Server à partir de la version 1709. Cela signifie que les balises de manifeste 2.x et 3.0 peuvent être utilisées sur Windows 10, la version 1709+ et Windows Server , version 1709+. Vous pouvez également utiliser des balises non manifestes pour ces versions également.
  • Nous ne produisons que des images Nano Server, version 1809 pour .NET Core 1.x. Auparavant, nous ne produisions que des images Nano Server, version 2016 pour .NET Core 1.x. Vous auriez utilisé une balise manifeste (comme 1.1-runtime ou 1.1 ) ou une nanoserver-sac2016 pour extraire ces images. Vous pouvez extraire les nouvelles images .NET Core 1.x Nano Server, version 1809 en utilisant une balise manifeste ou une balise nanoserver-1809 . Ces balises ne sont prises en charge que sur Windows 10, version 1809 et Windows Server 2019

Les images .NET Core pour Nano Server 2016 sont toujours disponibles sur Docker Hub et MCR et ne seront pas supprimées. Vous pouvez continuer à les utiliser mais ils ne sont pas pris en charge et n'obtiendront pas de nouvelles mises à jour. Si vous devez le faire et que les balises manifestes précédemment utilisées, comme 1.1-sdk , vous pouvez désormais utiliser les balises MCR suivantes (les variantes de Docker Hub sont similaires):


  • 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

Veuillez noter que .NET Core 1.x ne sera plus pris en charge le 27 juin 2019 . Nous recommandons aux utilisateurs de .NET Core 1.x de passer à .NET Core 2.1.


À DockerCon 2019


Nous envoyons quelques membres de l'équipe à DockerCon 2019 . Contactez-nous @ dotnet@microsoft.com si vous souhaitez vous rencontrer et discuter de la façon dont vous utilisez .NET et Docker ensemble. Nous aimerions connaître votre approche et tous les défis que vous rencontrez, ou les changements que vous aimeriez que nous apportions.


Nous assistons à DockerCon depuis quelques années et apprécions toujours le spectacle. C'est une bonne occasion d'apprendre les nouvelles façons dont les gens utilisent les conteneurs et aussi les nouvelles fonctionnalités qui arrivent. Par exemple, nous attendons toujours le support officiel de BuildKit . C'est la fonctionnalité que nous souhaitons le plus voir faire partie de l'ensemble de fonctionnalités par défaut de Docker.


Clôture


Nous continuons d'améliorer l'expérience d'utilisation des images de conteneur .NET Core de Microsoft. La publication d'images de conteneurs .NET Core sur MCR sera une amélioration car MCR est globalement répliqué.


Les images de conteneur .NET Framework ne sont pas encore disponibles sur MCR. Nous allons les déplacer vers MCR sous peu.


Consultez Utilisation de .NET et Docker ensemble si vous souhaitez en savoir plus sur l'utilisation de Docker.

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


All Articles