Containers

Wat zijn Containers?

Containers is een soort van virtualisatietechniek, maar dan op het niveau van het besturingssysteem. Traditionele virtualisatie gebruikt een hypervisor. Hierbij dient het hele bootproces van het besturingssysteem doorlopen te worden. Containers daarentegen zijn veel lichter, en kunnen veel sneller gestart worden. Op dit moment is het echter alleen maar mogelijk om linux-compatible-software in containers te gebruiken. Dat staat niet in de weg dat linux containers wel op windows besturingssystemen werken en ook ondersteund worden.

_images/containers-1.png

Wat is Docker?

Docker is de populairste container software voor Linux. Docker Engine is software dat geïnstalleerd kan worden om containers aan te maken, te managen en te gebruiken. Docker is beschikbaar voor zowel Windows, Linux, als MacOS. Er is ook Docker Hub, dat “as a service” producten aanbiedt om de build van containers online door hen te laten gebeuren. Ze bieden ook een repository server aan waar container images (vergelijkbaar met een VM image) gehost kunnen worden. Docker images kunnen zowel publiek als private (afgeschermd met credentials) gehost worden.

Wat zijn de voordelen?

Het gebruik van containers heeft tal van voordelen:

  • Containers zijn kleiner dan VM images (megabytes in plaats van gigabytes)
  • Containers kunnen gestart worden in minder dan een seconde (een VM starten is typisch enkele minuten)
  • Containers kunnen gemakkelijk gebundeld worden (bv. webapp + database software in aparte containers)
  • Dev-prod pariteit: dezelfde containers kunnen zowel in development als in productie gebruikt worden * Dit zorgt ervoor dat software dat lokaal getest wordt ook op de productieserver werkt
  • Container images bestaan uit lagen (layers), wat meer flexibiliteit biedt en de images kleiner maakt

Hoe past dit in het DevOps verhaal?

Containers brengen developers en operations dichter bij elkaar. Door dezelfde container images te gebruiken op de development machines als op productie, verkleint een verschil tussen dev-qa-prod omgevingen. De flexibiliteit laat toe om zeer snel nieuwe containers te bouwen en deze gemakkelijk te verspreiden binnen de organisatie.

Containers in productie

Google is al meer dan 10 jaar overgestapt op een container-driven infrastructuur. Met al de ervaring dat Google heeft in de containerwereld hebben ze een open source software pakket uitgebracht voor het managen van containers in productie, Kubernetes genaamd. Deze software en software van andere leveranciers wordt gebruikt om containers in productie te gebruiken. Een overzicht van de belangrijkste spelers:

  • Kubernetes (door Google)
  • Mesos
  • Docker swarm (door Docker)

Docker Orchestration tools zoals Kubernetes laten toe om containers zowel on-premise te gebruiken alsook op publieke cloud. Voordien was er altijd een groot verschil tussen software deployments on-premise en software deployments op de cloud. Deze orchestration tools laten toe om het datacenter volledig abstract te beschrijven om zo dezelfde manier van deployen toe te passen op eendere welke infrastructuur. Dit heeft het grote voordeel dat er geen verschillende systemen nodig zijn voor de verschillende datacenters/clouds dat een organisatie kan gebruiken.

Past Docker in mijn organisatie?

Zeer waarschijnlijk past Docker ook in uw organisatie. Veel leveranciers van software zijn mee op de container-kar gesprongen en bieden standaard containers aan voor hun software. Het kan een goede manier zijn om een flexibele en robuuste development omgevingen op te bouwen door middel van containers. Dat is ook waar de meeste organisaties mee beginnen: de development omgeving. Als het goed in development draait dan kan de stap naar QA/ACCEPT en productie gezet worden. Deze laatste stap is heel wat groter door de keuze van orchestration software die in productie dient te draaien.

_images/contact-in4it.png