.NET Core Container Images ahora publicadas en Microsoft Container Registry

Ahora estamos publicando imágenes de contenedor .NET Core en Microsoft Container Registry (MCR) . También hemos realizado otros cambios en las imágenes que publicamos, descritos en esta publicación.


Importante: Necesitará cambiar las declaraciones FROM en los archivos Dockerfile y docker pull comandos de docker pull Dockerfile como resultado de estos cambios. Las referencias 3.0 deben cambiarse ahora. La mayoría de los usos 1.xy 2.x se pueden cambiar con el tiempo. El nuevo esquema de etiquetas se describe en esta publicación y se proporciona en el repositorio microsoft-dotnet-core , nuestro nuevo hogar en Docker Hub.


Resumen de cambios:


  • Las imágenes de .NET Core ahora se publican en Microsoft Container Registry.
  • Las actualizaciones se seguirán publicando en Docker Hub, para .NET Core 1.xy 2.x.
  • .NET Core 3.0 solo se publicará en MCR.
  • Las imágenes de Nano Server 2016 ya no son compatibles o publicadas.

imagen

Este artículo en nuestro blog .

Registro de contenedor de Microsoft (MCR)


Los equipos de Microsoft ahora publican imágenes de contenedores en MCR . Hay dos razones clave para este cambio:


  • Podemos establecer MCR como la fuente oficial de imágenes de contenedor proporcionadas por Microsoft, y luego promover y sindicar más fácilmente esas imágenes a múltiples servicios de contenedor, como Docker Hub y Red Hat OpenShift.
  • Podemos usar Microsoft Azure como una red de distribución de contenido global (CDN) para entregar imágenes de contenedores proporcionadas por Microsoft desde ubicaciones más cercanas a usted. Esto significa que las imágenes de sus contenedores serán más rápidas y mejorarán la confiabilidad en muchos casos.

Desde una perspectiva arquitectónica, MCR es un servicio replicado globalmente que maneja solicitudes de manifiesto de imagen. Utiliza el servicio Azure CDN para las solicitudes de capa de imagen. Esta separación no es observable con el docker pull , pero es fácil de ver cuando inspecciona imágenes .NET Core con curl . El uso de recursos replicados globalmente ayuda a demostrar nuestro compromiso de proporcionar una gran experiencia para los usuarios de contenedores en todo el mundo.


Continuar apoyando Docker Hub


Continuaremos manteniendo las páginas de repositorio de Docker Hub para que pueda descubrir y aprender acerca de las imágenes de .NET Core . Las URL del sitio web de Docker Hub que ha utilizado para repositorios de Microsoft continuarán funcionando y se reenviarán a ubicaciones actualizadas en Docker Hub.


Utilizará y verá MCR como el back-end de almacenamiento para imágenes de contenedores de Microsoft, PERO la forma principal de aprender sobre las imágenes y etiquetas de contenedores de Microsoft será a través de un centro de contenedores o sitio web, que para muchos usuarios seguirá siendo Docker Hub.


Las imágenes existentes de Docker Hub se mantendrán tal cual. De hecho, continuaremos actualizando el repositorio existente de microsoft / dotnet, como se describe más adelante en esta publicación.


.NET Core Images están en MCR


Comenzamos a publicar imágenes en MCR en febrero de 2019, comenzando con el repositorio "nocturno" .NET Core . A principios de marzo, también trasladamos el repositorio de .NET Core .


En Docker Hub, teníamos un repositorio muy grande que mostraba cuatro tipos de imágenes para cuatro distribuciones del sistema operativo y tres tipos de CPU. Este amplio conjunto de etiquetas está hecho para nombres de etiqueta muy largos e incluso archivos README más largos. Decidimos aprovechar esta oportunidad para re-factorizar .NET Core en múltiples repositorios , uno para cada tipo de imagen. También agregamos un "repositorio de productos" que agrupa todos nuestros repositorios.


Los nuevos repos siguen:



Nota: .NET Core 2.0 es el fin de la vida útil (EOL), por lo tanto, no estará disponible en MCR, solo en Docker Hub, como imágenes no compatibles. Querrá pasar a .NET Core 2.1, que es una versión de soporte a largo plazo (LTS) .


Actualizar etiquetas de imagen de .NET Core


Los siguientes ejemplos muestran cómo se ven las nuevas cadenas de etiqueta de docker pull para .NET Core. Se muestran como docker pull , pero las mismas cadenas deben usarse en los archivos Dockerfile para las declaraciones FROM .


Todos estos ejemplos apuntan a .NET Core 2.1, pero se usa el mismo patrón en cualquier versión de .NET Core compatible:


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

El siguiente ejemplo demuestra cómo se ve una declaración FROM para los nuevos repositorios MCR, utilizando el repositorio dotnet/core/sdk como ejemplo:


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

Si usa Alpine, por ejemplo, las etiquetas se extienden fácilmente para incluir Alpine, usando el repositorio dotnet/core/runtime como ejemplo:


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

Puede consultar las muestras de .NET Core Docker para ver cómo se utilizan las cadenas de etiquetas en la práctica.


Soporte continuo para Docker Hub


Hemos estado publicando imágenes en Docker Hub durante tres o cuatro años. Es probable que se hayan escrito miles (si no millones) de scripts y archivos Docker que esperan imágenes de contenedores .NET en Docker Hub. Como se indicó anteriormente, esos artefactos continuarán funcionando tal cual.


Publicamos múltiples formas de etiquetas que proporcionan diferentes niveles de conveniencia y consistencia. Estas diferencias se basan en el grado en que se especifican los números de versión, desde completamente especificados hasta no presentes en absoluto. Las siguientes etiquetas de ejemplo demuestran las diversas formas de etiquetas, desde las menos específicas hasta las más específicas:


  • latest
  • 2.2-runtime
  • 2.1.6-sdk

Continuaremos publicando imágenes para los dos primeros formularios de etiquetas (versiones sin versión y versiones de dos partes) durante la vida útil admitida de las versiones asociadas. No publicaremos ninguna versión nueva de tres partes (como el último ejemplo) en Docker Hub, sino solo en MCR. Esperamos que la mayoría de los scripts y archivos Dockerfile usen cualquiera de las dos primeras formas de etiquetas, o se actualicen manualmente para adoptar etiquetas de tres partes en alguna cadencia regular. Si se actualizan manualmente, se pueden actualizar manualmente para extraer imágenes de MCR.


Imágenes de .NET Core 3.0


El cambio a MCR está sucediendo en parte a través de la versión .NET Core 3.0, que nos dio la opción de hacer que .NET Core 3.0 solo sea MCR. Esto hace que nuestro enfoque para MCR para .NET Core 3.0 sea diferente de las otras versiones compatibles. Inicialmente publicamos imágenes de vista previa de .NET Core 3.0 en Docker Hub. A partir de .NET Core 3.0 Preview 3 , las imágenes de .NET Core 3.0 solo se publicarán en MCR. Es importante que los usuarios de .NET Core 3.0 hagan la transición a MCR pronto.


Los siguientes son ejemplos de cadenas de etiquetas .NET Core 3.0, para ayudarlo a pasar a 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
  • Dependencias de .NET Core Runtime: docker pull mcr.microsoft.com/dotnet/core/runtime-deps:3.0

El siguiente ejemplo demuestra cómo se ve una instrucción FROM para .NET Core 3.0 en MCR, utilizando el repositorio dotnet/core/runtime como ejemplo:


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

Las imágenes de .NET Core 3.0 Preview 1 y Preview 2 permanecerán disponibles en Docker Hub, para etiquetas de versión de tres partes. Para Vista previa 1 y Vista previa 2, también 3.0-sdk etiquetas de versión de dos partes, como 3.0-sdk y 3.0-runtime . Nos preocupaba que algunos usuarios vieran esas etiquetas de versión de dos partes para .NET Core 3.0 en Docker Hub y creyeran que eran imágenes compatibles y se actualizarían en el futuro. No lo serán. Para mitigar eso, eliminamos las etiquetas de versión de dos partes para 3.0 en Docker Hub. Este enfoque nos permite comunicar claramente durante el período de vista previa que todos deben pasar a MCR para obtener imágenes 3.0 lo antes posible. Le pedimos disculpas si este cambio lo afectó negativamente.


Las vistas previas de Visual Studio 2019 usan las etiquetas 3.0 de dos partes que se eliminaron. Los usuarios deben actualizar sus archivos Dockerfile para asegurarse de que sus proyectos se Dockerfile correctamente. Hemos proporcionado un Dockerfile de muestra que proporciona las declaraciones FROM correctas para proyectos .NET Core 3.0 ASP.NET Core en Visual Studio 2019.


Imágenes de Nano Server 2016


Nano Server 2016 ya no es compatible con el equipo de Windows y ya no publican imágenes de contenedores actualizadas para esa versión. Como resultado, hemos dejado de publicar imágenes de Nano Server 2016 en Docker Hub y MCR.


Esto afecta a las etiquetas de imagen de .NET Core de diferentes maneras:


  • Las etiquetas de manifiesto (AKA " multi-arch ") ya no incluyen una entrada para Nano Server 2016. Eso significa que las etiquetas de manifiesto como 2.1-sdk ya no funcionarán en Windows Server 2016, Nano Server 2016 o Windows 10 1607. Si necesita para seguir usando imágenes basadas en Nano Server 2016 (aunque ya no sean compatibles), deberá usar etiquetas que incluyan la versión de Windows (son etiquetas no manifiestas), por ejemplo mcr.microsoft.com/dotnet/core/runtime:2.1-nanoserver-sac2016 .
  • Las imágenes .NET Core 2.xy 3.0 son compatibles y están disponibles para todas las versiones compatibles de Nano Server a partir de la versión 1709. Esto significa que las etiquetas de manifiesto 2.xy 3.0 pueden usarse en Windows 10, versión 1709+ y Windows Server , versión 1709+. También puede usar etiquetas no manifiestas para esas versiones, también.
  • Solo producimos imágenes de Nano Server, versión 1809 para .NET Core 1.x. Anteriormente, solo producíamos Nano Server, imágenes de la versión 2016 para .NET Core 1.x. Habría utilizado una etiqueta de manifiesto (como 1.1-runtime o 1.1 ) o una etiqueta nanoserver-sac2016 para extraer esas imágenes. Puede extraer el nuevo .NET Core 1.x Nano Server, imágenes de la versión 1809 utilizando una etiqueta de manifiesto o una etiqueta nanoserver-1809 . Estas etiquetas solo son compatibles con Windows 10, versión 1809 y Windows Server 2019

Las imágenes de .NET Core para Nano Server 2016 todavía están disponibles en Docker Hub y MCR y no se eliminarán. Puede continuar usándolos, pero no son compatibles y no recibirán nuevas actualizaciones. Si necesita hacer esto y etiquetas de manifiesto usadas anteriormente, como 1.1-sdk , ahora puede usar las siguientes etiquetas MCR (las variantes de Docker Hub son similares):


  • 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

Tenga en cuenta que .NET Core 1.x dejará de ser compatible el 27 de junio de 2019 . Recomendamos que los usuarios de .NET Core 1.x pasen a .NET Core 2.1.


En DockerCon 2019


Estamos enviando algunos miembros del equipo a DockerCon 2019 . Contáctenos @ dotnet@microsoft.com si desea reunirse y hablar sobre cómo usan .NET y Docker juntos. Nos encantaría conocer su enfoque y los desafíos que enfrenta, o los cambios que desea que hagamos.


Hemos asistido a DockerCon durante algunos años y siempre disfrutamos del espectáculo. Es una buena oportunidad para aprender las nuevas formas en que las personas usan contenedores y también qué nuevas características están llegando. Como ejemplo, todavía estamos esperando el soporte oficial para BuildKit . Es la característica que más queremos que forme parte del conjunto de características predeterminado de Docker.


Clausura


Continuamos mejorando la experiencia usando imágenes de contenedor .NET Core de Microsoft. La publicación de imágenes de contenedor .NET Core en MCR será una mejora ya que MCR se replica globalmente.


Las imágenes de contenedor de .NET Framework aún no están disponibles en MCR. Los trasladaremos a MCR en breve.


Consulte Uso de .NET y Docker juntos si desea obtener más información sobre el uso de Docker.

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


All Articles