GNU/Linux >> Tutoriales Linux >  >> Panels >> Docker

Probar nuevas imágenes de .NET Core Alpine Docker

Escribí recientemente en un blog sobre la optimización de los tamaños de los archivos .NET y ASP.NET Docker. .NET Core 2.0 se creó anteriormente en una imagen de Debian, pero hoy en día hay una imagen de vista previa con .NET Core 2.1 nightlies usando Alpine. Puede leer sobre el anuncio aquí sobre esta nueva imagen de vista previa de Alpine. También hay una buena publicación acumulada en .NET y Docker.

Han añadido dos nuevas imágenes:

  • 2.1-runtime-alpine
  • 2.1-runtime-deps-alpine

El soporte de Alpine es parte de la versión .NET Core 2.1. Las imágenes de .NET Core 2.1 se proporcionan actualmente en el repositorio microsoft/dotnet-nightly, incluidas las nuevas imágenes de Alpine. Las imágenes de .NET Core 2.1 se promocionarán al repositorio de microsoft/dotnet cuando se publiquen en 2018.

NOTA:La imagen -runtime-deps- contiene las dependencias necesarias para una aplicación .NET Core, pero NO el tiempo de ejecución de .NET Core en sí. Esta es la imagen que usaría si su aplicación fuera una aplicación independiente que incluyera una copia del tiempo de ejecución de .NET Core. Se trata de aplicaciones publicadas con -r [runtimeid]. La mayoría de la gente usará la imagen -runtime- que incluía el tiempo de ejecución completo de .NET Core. Para ser claro:

- El runtime la imagen contiene el tiempo de ejecución de .NET Core y está diseñada para ejecutar aplicaciones implementadas dependientes del marco; consulte la muestra

- El runtime-deps la imagen contiene solo las dependencias nativas que necesita .NET Core y está diseñada para ejecutar aplicaciones implementadas autónomas; consulte la muestra

Es mejor con .NET Core usar archivos de compilación de varias etapas, de modo que tenga un contenedor que compila su aplicación y otro que contiene los resultados de esa compilación. De esa manera, no terminará enviando una imagen con un montón de SDK y compiladores que no necesita.

NOTA:Lea esto para obtener más información sobre las versiones de imágenes en Dockerfiles para que pueda elegir la etiqueta y el resumen adecuados para sus necesidades. Idealmente, elegirá un archivo docker que avance para incluir los parches de mantenimiento más recientes.

Dado este archivo docker, construimos con la imagen SDK, luego publicamos y el resultado es de aproximadamente 219 megas.

FROM microsoft/dotnet:2.0-sdk as builder  

RUN mkdir -p /root/src/app/dockertest
WORKDIR /root/src/app/dockertest

COPY dockertest.csproj .
RUN dotnet restore ./dockertest.csproj

COPY . .
RUN dotnet publish -c release -o published

FROM microsoft/dotnet:2.0.0-runtime

WORKDIR /root/
COPY --from=builder /root/src/app/dockertest/published .
ENV ASPNETCORE_URLS=http://+:5000
EXPOSE 5000/tcp
CMD ["dotnet", "./dockertest.dll"]

Luego guardaré esto como Dockerfile.debian y compilaré así:

> docker build . -t shanselman/dockertestdeb:0.1 -f dockerfile.debian

Con una aplicación ASP.NET estándar, esta imagen termina siendo 219 megas.

Ahora solo cambiaré una línea y usaré el tiempo de ejecución alpino 2.1

FROM microsoft/dotnet-nightly:2.1-runtime-alpine

Y construye así:

> docker build . -t shanselman/dockertestalp:0.1 -f dockerfile.alpine

y comparar los dos:

> docker images | find /i "dockertest"
shanselman/dockertestalp 0.1 3f2595a6833d 16 minutes ago 82.8MB
shanselman/dockertestdeb 0.1 0d62455c4944 30 minutes ago 219MB

Agradable. Aproximadamente 83 megas ahora en lugar de 219 megas para una aplicación web Hello World. Ahora la idea de un micro ¡el servicio es más factible!

Diríjase al problema de GitHub aquí https://github.com/dotnet/dotnet-docker-nightly/issues/500 y ofrezca sus opiniones y resultados mientras prueba estas imágenes de Alpine. Además, ¿está interesado en un "-debian-slim?" Sería medio camino de Alpine pero no tan pesado como solo -debian.

Un montón de cosas geniales suceden alrededor de .NET y Docker. Asegúrese de consultar también la publicación de Jeff Fritz sobre la creación de un contenedor de Windows ASP.NET Core mínimo para ver cómo puede aplastar las aplicaciones .(full) Framework que se ejecutan también en contenedores de Windows. Por ejemplo, las imágenes de Windows Nano Server tienen solo 93 megas comprimidos .

Patrocinador: Obtenga la vista previa más reciente de JetBrains Rider para la compatibilidad con .NET Core 2.0, Value Tracking y Call Tracking, MSTest runner, nuevas inspecciones y refactorizaciones de código y la vista Parallel Stacks en el depurador.


Docker
  1. ¿Qué hay de nuevo en Docker Compose v2?

  2. Cómo modificar imágenes de Docker

  3. Introducción a las imágenes de Docker

  4. Detectar que una aplicación .NET Core se está ejecutando en un Docker Container y SkippableFacts en XUnit

  5. Optimización de los tamaños de imagen de ASP.NET Core Docker

Creación, ejecución y prueba de .NET Core y ASP.NET Core 2.1 en Docker en una Raspberry Pi (ARM32)

.NET y Docker

ZEIT ahora implementa aplicaciones web ASP.NET Core de código abierto con Docker

Exploración de ASP.NET Core con Docker en contenedores de Linux y Windows

Probar .NET Core en Linux con solo un tarball (sin apt-get)

Guía para principiantes del mundo Docker