GNU/Linux >> Znalost Linux >  >> Panels >> Docker

Vyzkoušejte nové .NET Core Alpine Docker Images

Nedávno jsem blogoval o optimalizaci velikosti souborů .NET a ASP.NET Docker. .NET Core 2.0 byl dříve postaven na obrazu Debianu, ale dnes je k dispozici náhledový obraz s .NET Core 2.1 nightlies pomocí Alpine. Zde si můžete přečíst oznámení o tomto novém náhledovém obrázku Alpine. Existuje také dobrý souhrnný příspěvek na .NET a Docker.

Přidali dva nové obrázky:

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

Podpora Alpine je součástí vydání .NET Core 2.1. Obrazy .NET Core 2.1 jsou aktuálně poskytovány v repozitáři microsoft/dotnet-nightly, včetně nových obrazů Alpine. Obrazy .NET Core 2.1 budou po vydání v roce 2018 povýšeny na úložiště microsoft/dotnet.

POZNÁMKA:Obraz -runtime-deps- obsahuje závislosti potřebné pro aplikaci .NET Core, ale NE samotné runtime .NET Core. Toto je obrázek, který byste použili, pokud by vaše aplikace byla samostatná aplikace, která obsahovala kopii běhového prostředí .NET Core. Toto jsou aplikace publikované s -r [id runtime]. Většina lidí bude používat obraz -runtime-, který obsahoval celý běhový modul .NET Core. Aby bylo jasno:

runtime image obsahuje běhové prostředí .NET Core a je určeno ke spouštění aplikací závislých na frameworku – viz ukázka

runtime-deps image obsahuje pouze nativní závislosti potřebné pro .NET Core a je určen ke spouštění aplikací Self-Contained Deployed – viz ukázka

S .NET Core je nejlepší používat vícefázové soubory sestavení, takže máte jeden kontejner, který vytvoří vaši aplikaci, a jeden, který obsahuje výsledky tohoto sestavení. Díky tomu nebudete muset dodávat obrázek se spoustou sad SDK a kompilátorů, které nepotřebujete.

POZNÁMKA:Přečtěte si toto, abyste se dozvěděli více o verzích obrázků v Dockerfiles, abyste si mohli vybrat správnou značku a přehled pro své potřeby. V ideálním případě si vyberete soubor dockeru, který se posune dopředu a bude obsahovat nejnovější servisní záplaty.

Vzhledem k tomuto souboru dockeru sestavíme s bitovou kopií SDK, poté publikujeme a výsledek je asi 219megs.

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"]

Pak to uložím jako Dockerfile.debian a sestavím takto:

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

Se standardní aplikací ASP.NET tento obrázek skončí na 219 mega.

Teď jen změním jeden řádek a použiji 2.1 alpine runtime

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

A postavte takto:

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

a porovnejte oba:

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

Pěkný. Nyní asi 83 megů místo 219 megů pro webovou aplikaci Hello World. Nyní myšlenka mikro služba je schůdnější!

Přejděte prosím k problému GitHub zde https://github.com/dotnet/dotnet-docker-nightly/issues/500 a nabídněte své myšlenky a výsledky při testování těchto obrázků Alpine. Také máte zájem o "-debian-slim?" Bylo by to na půl cesty do Alpine, ale ne tak těžké jako právě -debian.

Kolem .NET a Dockeru se děje spousta skvělých věcí. Nezapomeňte se také podívat na příspěvek Jeffa Fritze o vytvoření minimálního kontejneru ASP.NET Core Windows Container, abyste viděli, jak můžete zničit aplikace .(plného) Frameworku běžící také na kontejnerech Windows. Například obrazy Windows Nano Server jsou zkomprimovány na pouhých 93 MB .

Sponzor: Získejte nejnovější náhled JetBrains Rider pro podporu .NET Core 2.0, Value Tracking a Call Tracking, MSTest runner, nové kontroly a refaktoringy kódu a zobrazení Parallel Stacks v debuggeru.


Docker
  1. Co je nového v Docker Compose v2?

  2. Jak upravit obrázky Docker

  3. Úvod do Docker Images

  1. Začínáme s předpřipravenými obrázky Docker

  2. Zjištění, že aplikace .NET Core běží v kontejneru Docker a SkippableFacts v XUnit

  3. Optimalizace velikostí obrazu ASP.NET Core Docker

  1. Docker Tutorial – Začínáme s Dockerem v Linuxu

  2. Jak spustit aplikaci .NET v Dockeru

  3. Jak vyčistit a odstranit obrázky Dockeru