Lanseringen av Windows Server 2016 kommer allt närmare och en stor nyhet i detta OS är containers. Funktionen finns i två olika utföranden och vi ska här se vilka dessa är och när man bör välja containers istället för gamla hederliga virtuella servrar.

Läs också: Moln på marken? Snart kan du köra hela Azure på egna servrar.

Virtuella servrar har funnits länge och är idag mer eller mindre standard hos de flesta företag. Även om det fungerar väl finns ibland behovet av snabbare och mer reurssnåla lösningar. För många år sedan testade TechWorld produkten Virtuozzo, vilket är en föregångare till den nya containertekniken. Det revolutionerande med Virtuozzo var att den utgick från ett enda OS, och gjorde det möjligt att få detta enda OS att ”se ut” som separata, distinkta, OS.

Samma grundtanke växte snabbt till sig under 2013 då en open source-lösning som kallades Docker släpptes. Docker växte snabbt till sig i popularitet och snart insåg även Microsoft att detta var en användbar teknik och bakade in det som en nyhet i Windows Server 2016.

alt
I en virtuell server finns en hypervisor som emulerar en hårdvara och isolerar olika VM fullständigt från varandra. Med containers finns inget sådant lager, utan det är ett och samma OS som ”delas upp” i flera olika instanser. Detta ger snabbhet och kräver mindre resurser, men ger å andra sidan inte samma säkerhet som VM eftersom isoleringen inte är lika stark.


Låt oss börja med några grundläggande definitioner av de olika virtualiseringstyperna:

En virtuell server skapas genom att man via mjukvara emulerar en hel server, och man kör sedan ett helt OS i denna server. Detta OS tycker sig ”se” en egen dedikerad serverhårdvara som det kör ensam i. Det finns flera fördelar med virtuella servrar. De förändrar oftast inte administrativa processer särskilt mycket och som Windowsadministratör känner man igen sig direkt. Man har en fullständig isolering mellan olika virtuella servrar vilket borgar för hög säkerhet. Nackdelen är att det tar ganska mycket resurser i anspråk att driva ett helt OS separat i varje virtuell server.

En container skapas genom att man via mjukvara emulerar en egen instans av ett OS, vilket gör att en applikation tycker sig ”se” ett eget OS som den körs i. Det vill säga virtualisering av ett OS, snarare än av en hårdvara.

Applikationer som körs i containers anser sig alltså köras ensamma i ett OS, precis som ett helt OS anser sig köras ensam på en egen server i form av en VM. En container går extremt snabbt att skapa eftersom det enbart är ett nytt ”ansikte” som ska skapas på ett redan körande OS. En container är också extremt resurssnål eftersom den delar så pass mycket med det befintliga operativsystemet. Dessa två parametrar är också de som driver införandet av containrar på företagen.

Tekniskt sett skapas en container i Windows genom att en ny instans av User Mode skapas, medan det fortfarande bara finns en instans av Kernel Mode. Varje sådan User Mode Container har sitt eget filsystem och register och olika applikationer kan sedan installeras och på så vis delar de på ett och samma OS.

En Hyper-V Container (HVC) är en hybrid mellan de båda varianterna som beskrivs ovan. En HVC kombinerar den isolering som erbjuds av en virtuell server, men erbjuder samtidigt att man arbetar med samma kommandon och arbetsflöden som man gör med containers. Även om detta rent tekniskt innebär en högre grad av resursutnyttjande, så hålls detta ändå ner till ett minimum på grund av att det OS som utgör grunden för din containerinstans är väldigt bantat och du slipper också fundera på om din isolering mellan olika applikationer är tillräckligt stark.

Läs också: Docker förenklar utvecklingen – men hur är det egentligen med säkerheten?

För att hålla ner resursutnyttjandet så mycket som möjligt har Microsoft skapat en ny variant av Windows Server 2016 som heter Nano Server. Detta är en synnerligen bantad version av detta OS som inte ens går att logga in på och administrera med lokala grafiska verktyg, utan är enbart tänkt att användas för fjärrstyrd administration.

Vi vill förstås testa detta med containers så vi laddar hem och installerar TP4 av Windows Server 2016.

När vi installerat Containerfunktionen enligt sidorutan i artikeln så kan vi arbeta med den på två olika sätt, antingen via Docker-kommandon eller också med Powershell. Eftersom vi här fokuserar på Microsofts implementation av containers så använder vi Powershell.

Sida 1 / 3

Innehållsförteckning

Fakta

Ordet ”Docker” (förkortning av Dock-Worker) kommer från namnet på en hamnarbetare som lastar och lossar tungt gods, såsom containrar. Containrar är standardiserade till storlek och utförande och kan placeras på tåg eller stora lastpråmar utan förändring. Tanken med Docker är att samma teori ska gälla för mjukvara; den ska kunna köras på olika plattformar utan modifiering.

Containers är en ny ”feature” i Windows Server 2016 som installeras den vanliga vägen via Server Manager. För att få alla olika delar på plats, inklusive stöd för Hyper-V Containers, så kan du köra dessa två kommandon i en instans av Windows Server 2016 TP4 eller senare:

wget -uri https://aka.ms/tp4/Install-ContainerHost -OutFile C:\Install-ContainerHost.ps1
Följt av:
C:\Install-ContainerHost.ps1 –HyperV

Detta script kommer att ladda ned det du behöver. Det kan ta en stund, räkna med ca 30 minuter innan det är klart. För att kunna testa Hyper-V Containers genom att köra dem i en VM krävs att du har stöd för nästlad virtualisering, något som erbjuds av tex ESXi, VMWare Workstation eller Hyper-V i Windows Server 2016.