Centric connect.engage.succeed

How to Dock it…Docker voor Windows

Geschreven door Redactie Craft - 21 september 2016

Redactie Craft
Tijdens het Centric Tech Event 2016, op woensdag 7 september in CineMec Ede, vergeleek Alex Thissen (Xpirit) een monoliet ontworpen applicatie (Service Orientated Architecture) met opzichzelfstaande pebble stones-applicaties, de microservices.

Monoliet vs pebbles

Microservice landscape

Kort gezegd draait het bij SOA om de enterprisearchitectuur en bij microservices om de applicatiearchitectuur. Nanoserver is het nieuwe OS van Microsoft dat containers en microservices ondersteunt. Op dit CoreOS draaien Windows Container- en Hyper-V-applicatie containerservices.

Azure technology for Microservices

Via deze blog kom je meer te weten over de containerfunctionaliteit van Windows 10 met Docker. Waarom Docker? Voor het deployen van microservices bestaan natuurlijk meerdere platformmogelijkheden, maar Docker is van origine een opensource-engine die sinds een jaar zijn intrede heeft gedaan binnen Azure en op het Windows-platform in de vorm van Windows server-containers. Daarnaast is de Windows 10-versie van Docker sinds april van dit jaar beschikbaar en is het tevens een actueel voorbeeld van het hosten van containers voor microservices op dit platform.

Where to host your Microservice?

Docker-installatie

Docker automatiseert de packaging van de applicatie en het transport/de uitvoer van de software apps. Voor je Docker kunt installeren op Windows 10 Professional of Enterprise, moet je een aantal voorbereidingen treffen. Zo moeten de Hyper-V en container features van Windows 10 worden geactiveerd. Hiervoor kun je natuurlijk vanuit de Windows features de container- en Hyper-V-functionaliteit aanvinken, maar zelf vind ik het prettiger om hiervoor Powershell te gebruiken. Powershell is voor mij relatief nieuw, maar omdat het bijna onmogelijk is iets op Microsoft-systemen te doen zonder Powershell, gebruik ik het zoveel mogelijk. Gebruik jij al Powershell? Zo niet, ga er eens mee aan de slag, want de tool wordt steeds belangrijker.

Aan de slag met Docker Windows 10

Run Powershell in de administrator elevated privileges mode.

Elevated privileges

Execution policy

Herstart de computer.

Restart

Om Hyper-V-container op een betrouwbare manier te gebruiken, moet de Oplocks uitgeschakeld zijn.

Set-ItemProperty -Path 'HKLM:SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization\Containers' -Name VSmbDisableOplocks -Type DWord -Value 0 -Force

De installatie van Docker is nodig om met de Windows-container te communiceren. De Docker-services die worden geïnstalleerd, zijn de Docker engine, Docker-compose en Docker client. Zelf heb ik de Docker engine geïnstalleerd via de website van Docker.

De container- en Hyper-V-features zijn nu geïnstalleerd.

Features installed

https://docs.docker.com/docker-for-windows/

Download Docker for Windows

De volgende installatieinstructies zijn door Microsoft opgegeven:

Invoke-WebRequest "https://master.dockerproject.org/windows/amd64/docker-1.13.0-dev.zip" -OutFile "$env:TEMP\docker-1.13.0-dev.zip" -UseBasicParsing

Expand de Docker-zip in de ProgramFiles directory:

Expand-Archive -Path "$env:TEMP\docker-1.13.0-dev.zip" -DestinationPath $env:ProgramFiles

Voeg Docker toe aan het systeem pad:

For quick use, does not require shell to be restarted.
$env:path += ";c:\program files\docker"

# For persistent use, will apply even after a reboot. 
[Environment]::SetEnvironmentVariable("Path", $env:Path + ";C:\Program Files\Docker", [EnvironmentVariableTarget]::Machine)

Creëer de systeemservices en start de Docker-service:

Dockerd --register-service

Start service Docker

Controleer de status van de Docker-onderdelen met de volgende commando’s in Powershell of cmd.exe:

Docker status

Software van de Microsoft Nano server uit de repository ophalen:

Docker pull microsoft/nanoserver
 

Er is uiteraard ook een variant voor de containerservices voor Core OS van Windowsserver:

docker pull microsoft/windowsservercore

Docker Pull

  Docker Extract

Extracten van de software. Controleer met het commando 'docker Images' de status van de Nano server Docker Pull:

docker images

REPOSITORY TAG IMAGE ID CREATED SIZE

microsoft/nanoserver latest 3a703c6e97a2 7 weeks ago 969.8 MB

Docker Install Container

Hiermee is de installatie van Docker afgerond.

Een klein voorbeeld van een container deploy:

Container deploy

Start de container vanaf het Nanoserver Image:

docker run -it microsoft/nanoserver cmd

Eenvoudig voorbeeld van een script toegevoegd aan de container:

powershell.exe Add-Content C:\helloworld.ps1 'Write-Host "Hello World"'
 

Exit uit de container:

Exit

List de beschikbare containers:

docker ps -a

Maak een nieuwe container image van de aangepaste container en noem deze HelloWorld:

docker commit <Vervang het container ID met een beschikbare> helloworld

Geef de in de container beschikbare images weer met:

Docker images

En run ten slotte de container met het Docker run-commando

docker run --rm helloworld powershell c:\helloworld.ps1
Resultaat is dat er een Hyper-V container wordt gemaakt van het Hello world image, Hello world.ps wordt uitgevoerd
 

Graag hoor ik wat is jouw mening is over containerization met Windows container services en Docker. Of met andere producten die op de markt zijn. En wat vind jij van Windows server 2016 CoreOS en de ontwikkelingen van microservices ten opzichte van voorgaande softwareontwikkelingen? Is het nu misschien tijd om nog beter over de invulling van DevOps-teams na te denken?

Voor een overview van alle mogelijkheden van ACS Azure Container Services en de platformen waarop Docker kan worden gebruikt, lees je de blog van Randolph Widjaja.

Referenties

Wil jij Craft blogs volgen over jouw vakgebied? Schrijf je in voor de Craft-update.

Tags:Cloud

     
Schrijf een reactie
  • Captcha image
  • Verzenden