Step-by-step: Install NGINX on a Windows Container with Powershell on Azure

I ett tidigare blogginlägg visade jag hur du kunde skapa en container på Linux med Docker och sen enkelt installera NGINX som webb-server i din container.

I det här inlägget tänkte jag göra exakt samma sak fast med en Windows Container och istället för Docker så gör jag allt med Powershell.

Nu kör vi!

(Du kan klicka på bilderna för en större version!)

Skapa ny virtuell server i Azure och anslut till den

Enklaste sättet att testa Windows Containers är att skapa en ny server i Azure med hjälp av mallen ” Windows Server Container Preview”. Den bygger på ”Windows Server 2016 Technical Preview 3” där det finns stöd för Windows Container-rollen. I mallen är container-funktionen redan installerad och klar:

Skapa en server och se till att konfigurera dina ”Endpoints” så att du kan ta emot trafik på port 80:

När servern är på plats kan du RDP:a in på den och möts då av den här spännande synen, en kommandoprompt:

Vi startar Powershell och kör ett litet ”Get-Command”-kommando för att se vad vi kan göra med våra containers:

Skapa container och anslut till den

Vi ser att vi har en färdig ”Container Image” som vi kan basera våra kommande Containers på. Vi ser också att vi har en virtuell switch på plats. Tacka Azure för det!

Vi skapar en ny container baserad på vår image och ansluter den till vår virtuella switch. Vi startar sen vår container och ansluter till den via ”Enter-PSSession”-kommandot:

Installera webb-server i din container

Nu laddar vi ner vår webb-server i form av en zip-fil som vi sen packar upp och startar:

Sen avslutar vi vår Powershell-session och hoppar ut från vår container och tillbaka till vår container-host.

Konfigurera NAT för extern åtkomst till container

Nu blir det lite klurigt! Vi har nu en container som har den lokala IP-adressen 172.16.0.2, den adressen har den blivit tilldelad automatiskt. Det vi nu vill göra är se till så att port 80-anrop på vår container-host, alltså den servern som vi skapat i Azure, ska skickas vidare till port 80 på vår container och på så sätt träffa vår webb-server.

Vi skapar då en ny mappning mellan vår container och vår container-host med kommandot ”Add-NetNatStaticMapping” där vi pekar ut vilka portar det gäller och även vilka IP-adresser.

Avslutningsvis skapar vi en ny brandväggsregel på vår server för att släppa igenom trafik på port 80.

För att allt detta ska fungera krävs också att ni gjorde som jag bad er i början på det här inlägget, alltså att ni konfigurerade så kallade ”Endpoints” för port 80, när ni skapade er virtuella server:

Surfa in!

Om allt gått rätt till kan du nu surfa in på den externa IP-adressen som din server blivit tilldelad, då ska det se ut såhär.

Lycka till!