.NET Core Container-Images jetzt in der Microsoft Container Registry veröffentlicht

Wir veröffentlichen jetzt .NET Core-Container-Images in der Microsoft Container Registry (MCR) . Wir haben auch andere Änderungen an den in diesem Beitrag beschriebenen Bildern vorgenommen.


Wichtig: Aufgrund dieser Änderungen müssen Sie FROM Anweisungen in Dockerfile Dateien und docker pull Befehle ändern. 3.0 Referenzen müssen jetzt geändert werden. Die meisten 1.x- und 2.x-Verwendungen können im Laufe der Zeit geändert werden. Das neue Tag-Schema wird in diesem Beitrag beschrieben und im Microsoft-Dotnet-Core-Repo , unserem neuen Zuhause auf Docker Hub, bereitgestellt.


Zusammenfassung der Änderungen:


  • .NET Core-Images werden jetzt in der Microsoft Container Registry veröffentlicht.
  • Updates werden weiterhin in Docker Hub für .NET Core 1.x und 2.x veröffentlicht.
  • .NET Core 3.0 wird nur in MCR veröffentlicht.
  • Nano Server 2016-Images werden nicht mehr unterstützt oder veröffentlicht.

Bild

Dieser Artikel in unserem Blog .

Microsoft Container Registry (MCR)


Microsoft-Teams veröffentlichen jetzt Container-Images in MCR . Es gibt zwei Hauptgründe für diese Änderung:


  • Wir können MCR als offizielle Quelle für von Microsoft bereitgestellte Container-Images festlegen und diese Images dann einfacher für mehrere Container-Services wie Docker Hub und Red Hat OpenShift bewerben und syndizieren.
  • Wir können Microsoft Azure als globales Content Distribution Network (CDN) verwenden, um von Microsoft bereitgestellte Container-Images von Standorten in Ihrer Nähe bereitzustellen. Dies bedeutet, dass Ihre Container-Images schneller abgerufen werden und in vielen Fällen eine verbesserte Zuverlässigkeit aufweisen.

Aus architektonischer Sicht ist MCR ein global replizierter Dienst, der Bildmanifestanforderungen verarbeitet. Es verwendet den Azure CDN- Dienst für Image Layer-Anforderungen. Diese Trennung ist beim docker pull nicht docker pull , aber es ist leicht zu erkennen, wenn Sie .NET Core-Images mit Curl untersuchen . Die Verwendung global replizierter Ressourcen zeigt unser Engagement für eine großartige Erfahrung für Containernutzer auf der ganzen Welt.


Fortsetzung der Unterstützung von Docker Hub


Wir werden weiterhin Docker Hub-Repo-Seiten pflegen, damit Sie .NET Core-Images entdecken und kennenlernen können . Die URLs der Docker Hub-Website, die Sie für Microsoft-Repos verwendet haben, funktionieren weiterhin und werden an aktualisierte Speicherorte in Docker Hub weitergeleitet.


Sie werden MCR als Speicher-Backend für Microsoft-Container-Images verwenden und sehen, ABER Sie lernen Microsoft-Container-Images und -Tags in erster Linie über einen Container-Hub oder eine Website kennen, die für viele Benutzer weiterhin Docker Hub ist.


Vorhandene Docker Hub-Images werden unverändert beibehalten. Tatsächlich werden wir das vorhandene Microsoft / Dotnet-Repo weiterhin aktualisieren, wie später in diesem Beitrag beschrieben.


.NET Core Images befinden sich auf MCR


Wir haben im Februar 2019 mit der Veröffentlichung von Bildern in MCR begonnen , beginnend mit dem .NET Core-Repo „Nightly“ . Anfang März haben wir auch das .NET Core-Repo verschoben.


Auf Docker Hub hatten wir ein sehr großes Repo, das vier Image-Typen für vier Betriebssystem-Distributionen und drei CPU-Typen bereitstellte. Diese breite Palette von Tags wurde für sehr lange Tag-Namen und noch längere README-Dateien erstellt. Wir haben uns entschlossen, diese Gelegenheit zu nutzen, um .NET Core in mehrere Repos umzuwandeln , eines für jeden Bildtyp. Wir haben auch ein „Produkt-Repo“ hinzugefügt, das alle unsere Repos zusammenfasst.


Die neuen Repos folgen:



Hinweis: .NET Core 2.0 ist EOL (End-of-Life) und daher nicht auf MCR, sondern nur auf Docker Hub als nicht unterstützte Images verfügbar. Sie möchten zu .NET Core 2.1 wechseln, einer LTS-Version (Long Term Support) .


Aktualisieren Sie .NET Core Image-Tags


Die folgenden Beispiele zeigen Ihnen, wie die neuen docker pull Tag-Zeichenfolgen für .NET Core aussehen. Sie werden als docker pull angezeigt, aber in Dockerfile Dateien müssen dieselben Zeichenfolgen für FROM Anweisungen verwendet werden.


Diese Beispiele zielen alle auf .NET Core 2.1 ab, aber für alle unterstützten .NET Core-Versionen wird dasselbe Muster verwendet:


  • 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
  • .NET Core-Laufzeitabhängigkeiten: docker pull mcr.microsoft.com/dotnet/core/runtime-deps:2.1

Das folgende Beispiel zeigt dotnet/core/sdk Repo dotnet/core/sdk wie eine FROM-Anweisung für die neuen MCR-Repos aussieht:


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

Wenn Sie beispielsweise Alpine verwenden, können die Tags problemlos um Alpine erweitert werden, wobei das Repo dotnet/core/runtime als Beispiel dient:


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

In den .NET Core Docker-Beispielen können Sie sehen, wie die Tag-Zeichenfolgen in der Praxis verwendet werden.


Fortsetzung der Unterstützung für Docker Hub


Wir veröffentlichen Bilder seit drei oder vier Jahren in Docker Hub. Es wurden wahrscheinlich Tausende (wenn nicht Millionen) von Skripten und Docker-Dateien geschrieben, die .NET-Container-Images auf Docker Hub erwarten. Wie oben erwähnt, funktionieren diese Artefakte weiterhin wie sie sind.


Wir veröffentlichen verschiedene Arten von Tags, die ein unterschiedliches Maß an Komfort und Konsistenz bieten. Diese Unterschiede hängen davon ab, inwieweit Versionsnummern angegeben werden, von vollständig angegeben bis überhaupt nicht vorhanden. Die folgenden Beispiel-Tags veranschaulichen die verschiedenen Formen von Tags, von den am wenigsten bis zu den spezifischsten:


  • latest
  • 2.2-runtime
  • 2.1.6-sdk

Wir werden weiterhin Bilder für die ersten beiden Tag-Formulare (versionlose und zweiteilige Versionen) für die unterstützte Lebensdauer der zugehörigen Versionen veröffentlichen. Wir werden keine neuen dreiteiligen Versionen (wie im letzten Beispiel) in Docker Hub veröffentlichen, sondern nur in MCR. Wir gehen davon aus, dass die meisten Skripte und Dockerfile-Dateien eine der ersten beiden Arten von Tags verwenden oder manuell aktualisiert werden, um dreiteilige Tags mit normaler Trittfrequenz zu übernehmen. Wenn sie manuell aktualisiert werden, können sie manuell aktualisiert werden, um Bilder von MCR abzurufen.


.NET Core 3.0-Images


Die Umstellung auf MCR erfolgt teilweise in der Version .NET Core 3.0, die uns die Möglichkeit gab, nur .NET Core 3.0 MCR-fähig zu machen. Dies unterscheidet unseren Ansatz für MCR für .NET Core 3.0 von den anderen unterstützten Versionen. Wir haben zunächst .NET Core 3.0 Preview-Images für Docker Hub veröffentlicht. Ab .NET Core 3.0 Preview 3 werden .NET Core 3.0-Images nur in MCR veröffentlicht. Es ist wichtig, dass .NET Core 3.0-Benutzer bald auf MCR umsteigen.


Im Folgenden finden Sie Beispiele für .NET Core 3.0-Tag-Zeichenfolgen, mit denen Sie zu MCR wechseln können:


  • 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
  • .NET Core-Laufzeitabhängigkeiten: docker pull mcr.microsoft.com/dotnet/core/runtime-deps:3.0

Das folgende Beispiel zeigt am Beispiel des Repo dotnet/core/runtime wie eine FROM-Anweisung für .NET Core 3.0 auf MCR aussieht:


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

.NET Core 3.0 Preview 1- und Preview 2-Images bleiben für dreiteilige Versions-Tags in Docker Hub verfügbar. Für Preview 1 und Preview 2 haben wir auch zweiteilige Versions-Tags wie 3.0-sdk und 3.0-runtime . Wir befürchteten, dass einige Benutzer diese zweiteiligen Versions-Tags für .NET Core 3.0 auf Docker Hub sehen und glauben, dass dies unterstützte Images sind und in Zukunft aktualisiert werden. Sie werden es nicht sein. Um dies zu vermeiden, haben wir zweiteilige Versions-Tags für 3.0 in Docker Hub gelöscht. Dieser Ansatz ermöglicht es uns, während des Vorschauzeitraums klar zu kommunizieren, dass jeder so schnell wie möglich für 3.0-Bilder zu MCR wechseln muss. Wir entschuldigen uns, wenn diese Änderung Sie negativ beeinflusst hat.


Visual Studio 2019 Previews verwenden die zweiteiligen 3.0-Tags, die gelöscht wurden. Benutzer müssen ihre Dockerfile Dateien aktualisieren, um sicherzustellen, dass ihre Projekte korrekt erstellt werden. Wir haben eine Docker-Beispieldatei bereitgestellt , die die richtigen FROM Anweisungen für .NET Core 3.0 ASP.NET Core-Projekte in Visual Studio 2019 enthält.


Nano Server 2016 Bilder


Nano Server 2016 wird vom Windows-Team nicht mehr unterstützt und es werden keine aktualisierten Container-Images für diese Version mehr veröffentlicht. Aus diesem Grund haben wir die Veröffentlichung von Nano Server 2016-Images auf Docker Hub und MCR eingestellt.


Dies wirkt sich auf verschiedene Weise auf .NET Core-Image-Tags aus:


  • Manifest - Tags (AKA „ Multi-Arch “) enthalten keinen Eintrag mehr für Nano Server 2016. 2.1-sdk bedeutet, dass Manifest-Tags wie 2.1-sdk unter Windows Server 2016, Nano Server 2016 oder Windows 10 1607 nicht mehr funktionieren Um weiterhin Nano Server 2016-basierte Images zu verwenden (obwohl diese nicht mehr unterstützt werden), müssen Sie Tags verwenden, die die Windows-Version enthalten (dies sind nicht manifestierte Tags), z. B. mcr.microsoft.com/dotnet/core/runtime:2.1-nanoserver-sac2016 .
  • .NET Core 2.x- und 3.0-Images werden unterstützt und sind für alle unterstützten Versionen von Nano Server ab Version 1709 verfügbar. Dies bedeutet, dass die Manifest-Tags 2.x und 3.0 unter Windows 10, Version 1709+ und Windows Server verwendet werden können , Version 1709+. Sie können auch für diese Versionen nicht-manifestierte Tags verwenden.
  • Wir produzieren nur Nano Server-Images der Version 1809 für .NET Core 1.x. Bisher haben wir nur Nano Server-Images der Version 2016 für .NET Core 1.x erstellt. Sie hätten entweder ein Manifest-Tag (wie 1.1-runtime oder 1.1 ) oder ein nanoserver-sac2016 Tag verwendet, um diese Bilder nanoserver-sac2016 . Sie können die neuen .NET Core 1.x Nano Server-Images der Version 1809 entweder mithilfe eines Manifest-Tags oder eines nanoserver-1809 Tags nanoserver-1809 . Diese Tags werden nur unter Windows 10, Version 1809 und Windows Server 2019 unterstützt

.NET Core-Images für Nano Server 2016 sind weiterhin auf Docker Hub und MCR verfügbar und werden nicht gelöscht. Sie können sie weiterhin verwenden, sie werden jedoch nicht unterstützt und erhalten keine neuen Updates. Wenn Sie dies tun müssen und zuvor verwendete Manifest-Tags wie 1.1-sdk , können Sie jetzt die folgenden MCR-Tags verwenden (Docker Hub-Varianten sind ähnlich):


  • 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

Bitte beachten Sie, dass .NET Core 1.x am 27. Juni 2019 nicht mehr unterstützt wird . Wir empfehlen Benutzern von .NET Core 1.x, auf .NET Core 2.1 umzusteigen.


Auf der DockerCon 2019


Wir schicken einige Teammitglieder zur DockerCon 2019 . Kontaktieren Sie uns unter dotnet@microsoft.com, wenn Sie sich treffen und darüber sprechen möchten , wie Sie .NET und Docker gemeinsam verwenden. Wir würden gerne etwas über Ihren Ansatz und Ihre Herausforderungen oder Änderungen erfahren, die wir vornehmen sollen.


Wir nehmen seit einigen Jahren an der DockerCon teil und genießen die Show immer. Es ist eine gute Gelegenheit, die neuen Möglichkeiten der Verwendung von Containern und die neuen Funktionen kennenzulernen. Zum Beispiel warten wir immer noch auf die offizielle Unterstützung für BuildKit . Es ist die Funktion, die wir am liebsten als Teil des Standardfunktionssatzes von Docker sehen möchten.


Schließen


Wir verbessern die Erfahrung mit .NET Core-Container-Images von Microsoft weiter. Das Veröffentlichen von .NET Core-Container-Images in MCR ist eine Verbesserung, da MCR global repliziert wird.


.NET Framework-Container-Images sind in MCR noch nicht verfügbar. Wir werden sie in Kürze zu MCR verschieben.


Weitere Informationen zur Verwendung von Docker finden Sie unter Verwenden von .NET und Docker zusammen .

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


All Articles