När Microsoft och Docker meddelade att nästa version av Windows Server skulle stödja den allt populärare containeriseringstekniken, fanns det inte mycket teknisk detaljer om vad det skulle ta för att göra det arbetet, med frågor om hur inbyggd Docker verkligen kunde vara.

"Docker-motorn för Windows Server kommer att ha effektiv funktionalitet med Linux-sidan," meddelade Dockers vicepresident David Messsina oss. "Det kommer inte att vara någon skillnad i att använda en behållare, annat än operativsystemet i behållaren. API: erna och allt annat applikationsutvecklare behöver förlita sig på kommer att vara samma."

Men på Linux använder Docker-motorn (som kör behållarna och är separat från Docker-klienten du använder för att hantera dem) kärnfunktioner som namnområden och C-grupper. Kommer Windows Server att ha det, tillsammans med ett register, service värd och Access Control Lists för varje behållare?

"Vi ska göra allt det," Azure CTO Mark Russinovich bekräftade TechRadar Pro på TechEd Europe, "det skulle inte vara mycket om vi inte gjorde det." Den mer intressanta frågan är hur det passar in i Windows Server-applikationsmodellen och hur det kan dra nytta av vissa typer av virtualisering Microsoft har redan lagt in sitt operativsystem för bakåtkompatibilitet.

Olika sätt

Dockercontainrar tar en helt annan inställning än att sätta ett helt operativsystem och en eller flera applikationer i en virtuell maskin och köra det som ett enda system som kanske eller kanske inte kommunicerar med andra virtuella maskiner över ett virtuellt nätverk.

Docker handlar om att bygga upp en arbetsbelastning från microservices, med en tjänst per container. "Dessa behållare kan distribueras", berättade Messina, "det kan finnas flera kopior av var och en av de tjänster som distribueras över miljön." Docker handlar om att dela upp saker i behållare och sedan ansluta dem tillsammans som Lego-block för att göra det system du behöver.

Men hur passar det med Windows Server? "En av de viktigaste frågorna är hur långt vi kan ta appkompatibilitet med detta," påpekade Russinovich. "När du tittar på Windows App-ekosystemet är det väldigt komplext och applikationerna är väldigt komplexa med avseende på deras beroende och de olika tjänster som servern gör tillgängliga för dem. Vi ser ut vilka tjänster som kan virtualiseras och vilka måste vara virtualiseras så att vi kan presentera det per behållarens visning av tjänster. De enklaste programmen att hantera är helt isolerade, så de utnyttjar inte Windows Service Control Manager-tjänster. "

Var och en till sina egna

Varje behållare behöver också sin egen registry, så applikationer kan skriva in det, men det är något som har funnits i Windows i flera år, som en del av flytten för att stoppa användarna att behöva logga in som administratörer för att installera stationära applikationer.

"Vad vi gör där är mer sofistikerat, men vi utnyttjar filsystemvirtualisering och registreringsvirtualisering som vi har gjort, liksom nätverksvirtualisering." Få sättet att servis virtualiseras rätt är nyckeln till att få Docker till Windows, Russinovich förklaras och namnområden är en del av att göra det arbetet.

"Det finns vissa saker som är unika när det gäller dessa behållare. Den virtualisering du vanligtvis ser på Windows är en enda nivå, men Docker-modellen är staplad virtualisering." Det betyder att en Docker-bild kanske bara är en referens till en annan bild, plus lite extra kod.

"Du börjar med en basbild som är ett virtuellt filsystem, så lägger du upp en annan bild med sitt eget virtuella filsystem och som komposerar överst [av den första bilden]. Du kan skapa ett antal av dessa olika lager tillsammans - det är värdet av Docker Packing-format.