Vad är Docker Containers?

2015-06-02

Martin Edelius Lösningsarkitekt datacenter

En av de stora nyheterna från Microsoft är att de kommer stödja och använda Docker Containers i kommande produkter. I den här artikeln försöker jag beskriva vad Docker Containers är och hur de kan användas.

På samma sätt som det är komplicerat att skicka olika typer av gods - allt från pianon till USB-minnen - kors och tvärs över världen är det komplicerat att skicka olika typer av kod och applikationer från en miljö till en annan.

För att lösa problematiken med att skeppa pianon och USB-minnen skapades en standardiserad container som enkelt kan hanteras oavsett hur den transporteras. Containern kan innehålla vilket gods som helst utan att det påverkar hur godset skickas.

Docker är motsvarande container för applikationer.

I en Docker container placeras den applikation som skall skeppas från en miljö/infrastruktur till en annan miljö/infrastruktur.

Starten på resan kan vara en utvecklares laptop och destinationen en produktionsmiljö i ett datacenter on-premise eller ett publikt moln; Docker containers gör den här transporten enkel och bekymmersfri.

Precis på samma sätt som fraktbolagen inte behöver bekymra sig om vad som finns i de containers de lastar på sina båtar och lastbilar behöver inte ansvariga för infrastrukturen bekymra sig om vilken applikation som finns i de Docker containers de flyttar från en miljö till en annan 

Hur fungerar då detta i praktiken? 

Docker gör egentligen inget nytt, de gör det däremot bättre. I grova drag är en Docker container en virtualiserad och "inlåst" applikation som körs i sin egna bubbla.

Det finns kopplingar mot underliggande operativsystem men de är minimala och all kod och alla beroenden för applikationen är unika för den bubbla applikationen körs i.

Dockerteknologin släpptes på Linux i början av 2013 och är en numer vedertagen teknologi för applikationsvirtualisering på Linuxplattformen.

2014 lanserade Microsoft stöd för Docker i Azure via en så kallad "VM Extension" mot Linux VM. Detta innebär att stöd för Docker enkelt kan aktiveras i en Linux VM. För att hantera Docker containers i dessa VM används i dag de ordinarie verktyg som följer med Docker i Linux.

Microsoft har dock mycket större planer för Docker än att bara enkelt kunna skapa VMs med stöd för Docker i Azure.

De kommer att integrera Docker Hub - ett bibliotek med över 45 000 Linux Docker Images - direkt i Azure Gallery för att förenkla installationen av dessa i de Linux VM med Docker stöd som körs i Azure.

Intressantast är dock att de kommer inkludera stöd för Docker Containers direkt i nästa version av Windows Server.

Här vill jag passa på att adressera skillnaderna mellan Windows Server Containers och Linux Containers då det är viktigt att hålla isär dem.

Windows Server Containers kan bara köras på Windows Server och Linux Containers kan bara köras på Linux. Docker tillåter inte att applikationer flyttas mellan olika operativsystem. 

Däremot kan en Docker klient, oavsett vilket operativsystem den körs på, hantera containers på såväl Windows Server som Linux.

När det gäller Windows Server Containers kommer Microsoft att erbjuda två varianter i nästa version av Windows Server. Dels en "traditionell" Windows Server Container som fungerar precis som en Linux Container, fast på Windows Server, och dels en Hyper-V Container 

Som jag nämnde ovan är en Docker Container en applikation som körs i sin egen bubbla men för att den skall fungera måste den på något vis kommunicera med operativsystemet vilket gör att den trots allt inte är 100% isolerad.

En Hyper-V Container är däremot 100% isolerad då den körs i sin egen Hyper-V miljö, komplett med OS, utan kontakt med någon annan container.

Viktigt att notera är att en Hyper-V Container hanteras med exakt samma verktyg som Windows Server och Linux Containers. Utöver detta kan en applikation som är designad för en Windows Server Container också användas i en Hyper-V Container utan modifieringar.

Vad innebär då allt detta?

Docker Containers är en etablerad och populär teknologi för att underlätta installationen av applikationer i en uppsjö av olika miljöer. Oavsett om det är en laptop eller ett stort publikt moln installeras applikationen på ett effektivt och standardiserat sätt via en Docker Container.

Containers finns för Linux sedan 2013 och kommer att inkluderas i nästa version av Windows Server vilket gör att även Windowsapplikationer kan hanteras lika enkelt och effektivt.

Kraven på homogena miljöer minskar radikalt då det är upp till utvecklarna av applikationen att se till att allt som krävs finns med i den container de använder för applikationen. Docker-motorn i respektive operativsystem ser sedan till att containern hanteras på rätt sätt.