icon over onsOnderscheiden door kennis en kunde

Software Containers

Applicaties draaien bijna nooit meer direct op de server maar op een virtualisatielaag. In zo'n oplossing draait de applicatie op een gevirtualiseerd OS. Dit OS is vaak hetzelfde OS als het OS waarop de virtualisatie software zelf draait. Als je nu tien Virtual Machines hebt draaien boven op een server zijn er elf instanties van het OS. Als er een security patch uitgerold moet worden, moet deze 11 keer geïnstalleerd worden.

De makers achter container software vragen zich af waarom je 11 keer hetzelfde systeem wilt managen. Zij splitsen het OS in twee delen, het vaste deel wat altijd hetzelfde is en een deel met daarin de specifieke wijzigingen van het systeem.  Het virtual machine concept wordt vervangen door een container met daarin het OS specifieke deel en de applicatie. De hypervisor software wordt vervangen door een stuk software waarmee een container geëxecuteerd kan worden. De container software is voor het vaste deel van het OS afhankelijk van de fysieke host.

Is er nu een patch in het vaste deel van het OS dan hoeft de patch maar op een plaats uitgevoerd te worden, namelijk op de host en alle containers maken meteen gebruik daarvan.

 Vegelijking van virtualisatie met software containers

Een tweede toepassing van software containers zorgt voor een verandering in hoe we software ontwikkelen en door een OTAP straat heen naar productie brengen.

Traditioneel wordt bij software ontwikkeling de code gecompileerd naar een bestand, aan dat bestand worden eventueel niet code artefacten toegevoegd. Voorbeelden daarvan zijn plaatjes, configuratiebestanden en HTML pagina's. In JEE termen heet dit een EAR file, op Windows spreken we over een executable (exe) file. Soms horen bij zo'n oplevering nog losse afhankelijkheden naar software bibliotheken als JAR- of DLL files. Het geheel wordt gepackaged gedistribueerd over een OTAP straat. 

Als nu alle OS veranderingen die nodig zijn om de software in ontwikkeling draaiende te krijgen samen met de applicatie package opgenomen worden in een container dan kan de applicatie van omgeving naar omgeving gaan, zonder nog installaties uit te voeren. Daarmee worden veel fouten, die veroorzaakt worden door het feit dat twee omgevingen net wat anders geconfigureerd zijn, voorkomen.  Specifieke verschillen tussen omgevingen die verschillend moeten blijven, bijvoorbeeld de applicatie moet in Test naar een andere database verbinden dan in Acceptatie, kan ingeregeld worden met Configuration Management.


Container tool

Docker is een software container tool waarmee containers op Linux OS geplaatst worden. Het maakt gebruik van de virtualisatie mogelijkheden die in het Linux OS verwerkt zitten.

Docker integreert met onder meer de volgende infrastructuur tool Amazon web service, Ansible, Puppet, Chef en Vagrant


Onderdeel van het Docker ecosysteem

Fig is onderdeel van het Docker Ecosysteem. Docker splitst een server beschrijving op in een aantal configuratie bestanden. Bijvoorbeeld een voor de server, een voor database, een voor de data in de database. Hierdoor onstaan herbruikbare legoblokjes. Met Fig kunnen deze blokjes gecombineerd (in fig termen; orchestrate of compose) worden tot een complete server beschrijving.


Andere oplossingen in de markt:

  • Spoonium (Microsoft Windows alernatief voor Docker)
  • Apache Mesos (Fig alternatief)
  • Docker Compose (Fig alternatief/opvolger)