GNU/Linux >> Linux Esercitazione >  >> Panels >> Docker

.NET Core e Docker

Se hai installato Docker, puoi eseguire rapidamente un esempio di .NET Core proprio come questo. Provalo:

docker run --rm microsoft/dotnet-samples

Se il tuo Docker per Windows è in "modalità contenitore di Windows", puoi provare .NET Framework (il 4.x Windows Framework) in questo modo:

docker run --rm microsoft/dotnet-framework-samples

Ho fatto un video la scorsa settimana con un articolo che mostra quanto sia facile ottenere un'applicazione containerizzata in Azure E a buon mercato con fatturazione al secondo.

Le immagini del contenitore sono facili da condividere tramite Docker Hub, Docker Store e registri Docker privati, ad esempio Azure Container Registry. Dai un'occhiata anche agli strumenti di Visual Studio per Docker. Funziona tutto molto bene insieme.

Mi piace questa citazione di Richard Lander:

Immagina circa cinque anni fa qualcuno che ti dice in un colloquio di lavoro che si preoccupa così tanto della coerenza da spedire sempre il sistema operativo con la sua app. Probabilmente non li avresti assunti. Eppure, questo è esattamente il modello utilizzato da Docker!

Ed è un buon modello! Ti dà consistenza garantita. "I contenitori includono l'applicazione e tutte le sue dipendenze. L'applicazione esegue lo stesso codice, indipendentemente dal computer, dall'ambiente o dal cloud." È anche un buon modo per assicurarti che il tuo .NET sottostante sia aggiornato con le correzioni di sicurezza:

Docker è un punto di svolta per l'acquisizione e l'utilizzo di aggiornamenti .NET. Ripensa a solo pochi anni fa. Dovresti scaricare l'ultimo .NET Framework come pacchetto di installazione MSI su Windows e non dovrai scaricarlo di nuovo fino a quando non avremo spedito la versione successiva. Avanti veloce fino ad oggi. Inviamo le immagini dei container aggiornate su Docker Hub più volte al mese.

Le immagini .NET vengono create utilizzando le immagini Docker ufficiali, il che è carino.

Le immagini .NET vengono create utilizzando immagini ufficiali. Ci basiamo sulle immagini ufficiali di Alpine, Debian e Ubuntu per x64 e ARM. Utilizzando le immagini ufficiali, lasciamo il costo e la complessità dell'aggiornamento regolare delle immagini di base del sistema operativo e dei pacchetti come OpenSSL, ad esempio, agli sviluppatori più vicini a tali tecnologie. Invece, il nostro sistema di compilazione è configurato per creare, testare e inviare automaticamente immagini .NET ogni volta che le immagini ufficiali che utilizziamo vengono aggiornate. Utilizzando questo approccio, siamo in grado di offrire .NET Core su più distribuzioni Linux a basso costo e di rilasciare aggiornamenti in poche ore.

Ecco dove puoi trovare i repository .NET Docker Hub:

Repo .NET Core:

  • microsoft/dotnet:include immagini di runtime, sdk e ASP.NET Core .NET Core.
  • microsoft/aspnetcore:include immagini di runtime ASP.NET Core per .NET Core 2.0 e versioni precedenti. Usa microsoft/dotnet per .NET Core 2.1 e versioni successive.
  • microsoft/aspnetcore-build – Include ASP.NET Core SDK e node.js per .NET Core 2,0 e versioni precedenti. Usa microsoft/dotnet per .NET Core 2.1 e versioni successive. Vedi aspnet/annunci #298.

Repo .NET Framework:

  • microsoft/dotnet-framework – include runtime .NET Framework e immagini sdk.
  • microsoft/aspnet:include immagini di runtime ASP.NET, per ASP.NET Web Form e MVC, configurate per IIS.
  • microsoft/wcf – include le immagini di runtime WCF configurate per IIS.
  • microsoft/iis:include IIS sopra l'immagine di base di Windows Server Core. Funziona ma non ottimizzato per le applicazioni .NET Framework. microsoft/aspnet e microsoft/wcfrepos sono invece consigliati per l'esecuzione dei rispettivi tipi di applicazione.

Ci sono alcuni tipi di immagini nel repository microsoft/dotnet:

  • SD — Immagini .NET Core SDK, che includono .NET Core CLI, .NET Core runtime e ASP.NET Core.
  • runtime di aspnetcore — Immagini ASP.NET Core, che includono il runtime .NET Core e ASP.NET Core.
  • tempo di esecuzione — Immagini di runtime .NET Core, che includono il runtime .NET Core.
  • Dep.di runtime — Immagini delle dipendenze di runtime .NET Core, che includono solo le dipendenze di .NET Core e non .NET Core stesso. Questa immagine è destinata ad applicazioni autonome ed è offerta solo per Linux. Per Windows, puoi usare l'immagine di base del sistema operativo direttamente per le applicazioni autonome, poiché tutte le dipendenze di .NET Core ne sono soddisfatte.

Ad esempio, utilizzerò un'immagine SDK per creare la mia app, ma utilizzerò aspnetcore-runtime per spedirla. Non è necessario spedire l'SDK con un'app in esecuzione. Voglio mantenere le dimensioni delle mie immagini il più ridotte possibile!

Per me, ho anche creato un piccolo script di PowerShell (eseguibile su Windows o Linux) che compila e testa il mio sito Podcast (l'immagine con il tag podcast:test) all'interno della finestra mobile . Notare la mappatura del volume? Memorizza i risultati del test all'esterno del contenitore in modo che possa esaminarli in seguito, se necessario.

#!/usr/local/bin/powershell
docker build --pull --target testrunner -t podcast:test .
docker run --rm -v c:\github\hanselminutes-core\TestResults:/app/hanselminutes.core.tests/TestResults podcast:test

Abbastanza elegante.

Results File: /app/hanselminutes.core.tests/TestResults/_898a406a7ad1_2018-06-28_22_05_04.trx

Total tests: 22. Passed: 22. Failed: 0. Skipped: 0.
Test execution time: 8.9496 Seconds

Leggi come vengono create, gestite e mantenute le immagini .NET Core. Mi è stato facile ottenere il mio sito di podcast, una volta inserito nella docker, in esecuzione su .NET Core su un Raspberry Pi (ARM32).

Nuovo sponsor! Non digitare mai più una fattura! Con DocSight OCR di ActivePDF, estrai i dati da fatture, fatture, ordini di acquisto e altri documenti utilizzando la tecnologia di acquisizione dati zonale. Realizza la Trasformazione Digitale oggi!


Docker
  1. Come installare .NET Core su Debian 10

  2. Che cos'è Docker (e contenitori Linux?)

  3. Quando e perché usare Docker

  4. Rilevamento che un'app .NET Core è in esecuzione in un contenitore Docker e SkippableFacts in XUnit

  5. Ottimizzazione delle dimensioni dell'immagine Docker ASP.NET Core

Creazione, esecuzione e test di .NET Core e ASP.NET Core 2.1 in Docker su un Raspberry Pi (ARM32)

Un emulatore GameBoy lato server multigiocatore scritto in .NET Core e Angular

Provare nuove immagini Docker Alpine .NET Core

.NET e Docker

ZEIT ora distribuisce le app Web ASP.NET Core open source con Docker

Esplorazione di ASP.NET Core con Docker in entrambi i contenitori Linux e Windows