Programmering

Hva du trenger å vite om Docker i Windows

Jeg tilbrakte slutten av forrige uke på Monki Gras, en utviklerkonferanse i London som fokuserte på håndverket av programvareutvikling. Det er en fascinerende begivenhet, og i år fokusert på hvordan du pakker programvare.

Ikke overraskende, mange av høyttalerne snakket om rollen til containere i devops og kontinuerlig levering. Men det var en generell misforståelse av Windows støtte for containere, generelt karakterisert som støtte for Docker som kjører i Linux-virtuelle maskiner.

Det er ikke sant: Windows har sine egne containerteknologier, og bygger på Docker, men gir det et unikt Microsoft-spinn. Det er sannsynligvis kilden til forvirringen, med Windows 10 som legger til støtte for et Linux-delsystem og Microsoft legger til Docker-verktøy i Windows Server 2016 omtrent samtidig. Begge er en del av Microsofts tilnærming til cloud-native applikasjonsutvikling, som er et sentralt element i Azure-plattformen fremover.

Microsofts forpliktelse til containere, en av de viktigste industriutviklingene de siste årene, burde ikke være overraskende. Kanskje best tenkt som en måte å kapsle inn et helt brukerland av prosesser og navnerom for å isolere det fra andre forekomster som kjører på samme server, har containere raskt blitt en nøkkelkomponent i devops og kontinuerlig integrasjonsimplementeringer. Microsoft har vært en rask adopterer av disse tilnærmingene internt, og som alltid reflekterer verktøyene hvordan Redmond bruker programvare og hvordan de bygger applikasjoner.

Forstå containere

Ved å skille tjenestene et program bruker fra tjenestene et operativsystem trenger, har moderne containere blitt et kraftig verktøy for pakking og distribusjon av applikasjoner på servere. Containere tilbyr bærbarhet blant utviklingssentre, lokale datasentre og private, hybrid og offentlige skyer. Programmer pakket i en container er uavhengige av verts-operativsystemet, og de kan kjøres på en hvilken som helst lignende containervert uten endringer.

Innpakning av et program i en container betyr at applikasjonen er enkel å distribuere sammen med alle passende konfigurasjonsfiler og avhengigheter: Hvis en container kjører på en utviklingsmaskin eller består alle integrasjonstestene dine, kjører den på en server uten noen endringer. Du kan bytte ut en container for en ny versjon uten å påvirke det underliggende operativsystemet, og du kan flytte en container fra server til server uten å påvirke koden din. Det er det logiske endepunktet til en devops-modell, slik at du kan distribuere infrastruktur og applikasjoner separat - og administrere dem separat.

Opprinnelig kunne en mainframe-teknologi, containere (eller i det minste lignende former for navneområde og prosessisolering) finnes i mange Unix-operativsystemer, inkludert Linux og Solaris.

Inne i Windows-containere

Nå, med utgivelsen av Windows Server 2016, har Windows sin egen containerteknologi. Den er basert på den populære Docker-container-tjenesten med åpen kildekode, men den legger til støtte for bruk av PowerShell-kommandolinjen og for ekstra isolasjon med kombinasjonen av den tynne containerfokuserte Nano Server og Hyper-V-containere.

Docker er fortsatt hjertet i Microsofts containerstrategi. Verktøyene, som Swarm and Machine, er mye brukt, og datasenterproduktet kan administrere både Windows- og Linux-containere. Du kan til og med bruke Dockers klient fra Bash-skallet som er en del av Windows 10, og installere det i Windows-delsystemet for Linux. Denne tilnærmingen krever at du sjonglerer sertifikater, så du foretrekker kanskje å bruke Dockers Windows-app som et utviklings- og grunnleggende administrasjonsverktøy for både Windows- og Linux-containere.

Windows-containere er, som mange Windows Server-funksjoner, en rolle som kan installeres enten via den velkjente Windows-funksjonsdialogen eller via PowerShell. Å ta PowerShell-ruten er mest fornuftig fordi det er en OneGet PowerShell-modul som installerer både Windows-containerfunksjonen og Docker, med bare en omstart nødvendig for å komme i gang. (Du må også aktivere Hyper-V-virtualisering hvis du vil bruke Hyper-V-containere.)

Det er overraskende mye entusiasme for Windows-containere fra både utviklere og ops-team; Microsoft har rapportert mer enn 1 million nedlastinger av de grunnleggende Windows-bildene fra Dockers Hub-containerbibliotek siden Windows Server 2016 ble tilgjengelig.

Bygge og distribuere containere på Windows

Beholdere er ikke bare et serververktøy; Professional- og Enterprise-versjonene av Windows 10 Anniversary Edition støtter også containere. Du må aktivere dem fra Windows-funksjoner-dialogboksen, men når de er aktivert, kan du installere og administrere Windows-containere på en utviklings-PC ved hjelp av PowerShell. Fordi Windows 10 bare støtter Hyper-V-containere, må du også installere Hyper-V.

Når Windows-containere er aktivert, må du laste ned og installere Docker Engine og Docker-klienten, og installere basisbildene du trenger å konfigurere for applikasjonen din.

Microsofts foreslåtte basisbilde for nybyggede Windows-containere er Nano Server, dets skyfokuserte serverimplementering med lite fotavtrykk. Nano Server gir mye mening som en containerbase: Den er liten og rask, uten brukergrensesnitt, så den er rask å distribuere og relativt sikker.

En viktig merknad: Selv om du kan bruke den til å være vert for driftstider som Node.js, er Nano Server ment å være vert for .Net Core-applikasjoner, inkludert ASP.Net Core, slik at du ikke får alle. Net-funksjonene du er vant til. . Det er nok forskjell fra den kjente Windows Server at det kanskje er best å tenke på Nano Server-vert Windows-containere som et verktøy for nye applikasjoner i stedet for som en vert for eksisterende kode.

Disse forskjellene forklarer hvorfor mange bedrifter bruker Windows Server Core som et grunnbilde. Selv om det er større og tar lengre tid å distribuere enn Nano Server, tilbyr Windows Server Core støtte for nåværende Windows SDK-er og en full. Net-implementering. Det er mye lettere å raskt flytte eksisterende kode til Server Core, noe som gir deg muligheten til, som Lead Program Manager for Windows Server og Hyper-V Containere Taylor Brown kaller det, "løft og skift" fra eksisterende servere til containere, så de ' kan distribueres hvor du vil. Når applikasjonen er i en container, kan utviklere dekomponere den ytterligere; for eksempel å flytte API-kontakter til sine egne Nano Server-baserte containere for å forenkle applikasjonsvedlikehold.

Containerstøtte bygges inn i Windows-verktøy på det aller laveste nivået, med Windows-containere nå et distribusjonsmål for Visual Studio 2017. Du kan bygge og levere applikasjoner som en container, klar for test. Å lage containere med et enkelt museklikk unna er et viktig trinn.

Med Windows Azure som snart støtter nestet virtualisering, vil muligheten til å legge til mer isolasjon i den offentlige skyen hjelpe regulerte bransjer med å rettferdiggjøre et trekk til både containere og til skyen.

$config[zx-auto] not found$config[zx-overlay] not found