Trace Id is missing
Naar hoofdinhoud gaan

Wat is een container?

Gestandaardiseerde, overdraagbare verpakking voor je toepassingen.

Uitleg over containers

Net als transportbedrijven fysieke containers gebruiken om verschillende soorten lading van elkaar te scheiden, bijvoorbeeld bij transport in schepen en treinen, zo passen ook technologieën voor softwareontwikkeling steeds meer een methode toe waarbij containers worden gebruikt.

Een standaardpakket van software, een zogeheten container, bundelt de code van een toepassing samen met de bijbehorende configuratiebestanden, bibliotheken en afhankelijkheden die nodig zijn om de app uit te voeren. Op die manier kunnen ontwikkelaars en IT-professionals toepassingen naadloos in verschillende omgevingen implementeren.

Waarom containers interessant voor je zijn

Het probleem van een toepassing die niet goed kan worden uitgevoerd wanneer deze naar een andere omgeving wordt verplaatst, is al zo oud als softwareontwikkeling zelf. Dergelijke problemen worden doorgaans veroorzaakt door verschillen in de configuratie die ten grondslag ligt aan bibliotheekvereisten en andere afhankelijkheden.

Met containers wordt dit probleem opgelost doordat ze een lichtvoetige, onveranderlijke infrastructuur bieden voor het verpakken en implementeren van toepassingen. Een toepassing of service, de bijbehorende afhankelijkheden en de configuratie hiervan worden samen verpakt als een containerinstallatiekopie. De containertoepassing kan worden getest als een eenheid en als een instantie van een containerinstallatiekopie worden geïmplementeerd in het hostbesturingssysteem.

Op deze manier kunnen ontwikkelaars en IT-professionals met behulp van containers toepassingen implementeren in verschillende omgevingen en hoeven ze weinig of geen wijzigingen aan te brengen.

Meer informatie over de ontstaansgeschiedenis en de voordelen van containers.

Een persoon die diagrammen tekent met een witte stift.

Container versus virtuele machine

Wanneer mensen aan virtualisatie denken, denken ze vaak aan virtuele machines (VM's). Virtualisatie kan veel vormen aannemen en containers zijn er daar één van. Wat is dan het verschil tussen virtuele machines en containers?

Op hoog niveau virtualiseren VM's de onderliggende hardware zodat er meerdere besturingssysteeminstanties op de hardware kunnen worden uitgevoerd. Op elke VM wordt een besturingssysteem uitgevoerd en elke VM heeft toegang tot gevirtualiseerde informatiebronnen die de onderliggende hardware vertegenwoordigen.

VM's hebben veel voordelen. Bijvoorbeeld de mogelijkheid om verschillende besturingssystemen uit te voeren op dezelfde server, een efficiënter en rendabeler gebruik van fysieke informatiebronnen en een snellere inrichting van de server. De keerzijde is dat elke VM onder meer een installatiekopie van het besturingssysteem, bibliotheken en toepassingen bevat, en dus zeer groot kan worden.

Met een container wordt het onderliggende besturingssysteem gevirtualiseerd en wordt ervoor gezorgd dat de container-app het besturingssysteem, inclusief CPU, geheugen, bestandsopslag en netwerkverbindingen, als een geheel eigen besturingssysteem beschouwt. Omdat de verschillen in het onderliggende besturingssysteem en de infrastructuur worden geabstraheerd, kan de container overal worden geïmplementeerd en uitgevoerd zolang de basisinstallatiekopie consistent is. Voor ontwikkelaars is dit zeer aantrekkelijk.

Omdat containers het hostbesturingssysteem delen, hoeven ze geen besturingssysteem op te starten of bibliotheken te laden. Hierdoor zijn containers veel efficiënter en lichtvoetiger. Container-apps kunnen binnen enkele seconden worden gestart en er kunnen op de computer veel meer instanties van de toepassing worden uitgevoerd dan in een scenario met een VM. De methode met gedeelde besturingssystemen heeft als bijkomend voordeel dat hierbij sprake is van minder overhead wat betreft het onderhoud, zoals het uitvoeren van patches en updates.

Hoewel containers overdraagbaar zijn, zijn ze beperkt tot het besturingssysteem waarvoor ze zijn gedefinieerd. Een container voor Linux kan bijvoorbeeld niet worden uitgevoerd in Windows en omgekeerd.

Waarom containers?

Flexibiliteit

Wanneer ontwikkelaars hun toepassingen ontwikkelen, in containers verpakken en aan het IT-team leveren zodat deze op een gestandaardiseerd platform kunnen worden uitgevoerd, wordt hiermee het implementeren van toepassingen vereenvoudigd en kan de hele cyclus voor ontwikkelen en testen worden gestroomlijnd. Het zorgt ook voor een betere samenwerking en grotere efficiëntie tussen het ontwikkelteam en het Operations-team zodat apps sneller kunnen worden geleverd.

Draagbaarheid

Containers bieden een gestandaardiseerde indeling voor het verpakken en opslaan van alle onderdelen die nodig zijn om de gewenste toepassing uit te voeren. Hiermee los je het typische probleem van 'het werkt op mijn computer' op en zorg je voor overdraagbaarheid tussen besturingssysteemplatformen en tussen clouds. Steeds als een container ergens wordt geïmplementeerd, wordt deze uitgevoerd in een consistente omgeving die voor alle implementaties hetzelfde is. Je beschikt nu over een consistente indeling, van ontwikkel- tot productieomgeving.

Snelle schaalbaarheid

Omdat containers niet de overhead hebben die kenmerkend is voor VM's, zoals afzonderlijke besturingssysteeminstanties, kunnen veel meer containers worden ondersteund in dezelfde infrastructuur. De lichtvoetigheid van containers houdt in dat ze snel kunnen worden gestart en gestopt, waardoor snel kan worden op- en afgeschaald.

Gebruiksvoorbeelden

Cloudtoepassingen

Cloudtoepassingen zijn afhankelijk van containers voor een veelgebruikt operationeel model dat wordt toegepast in verschillende omgevingen, ongeacht of dit openbaar, privé of hybride is. Dankzij de lage overhead en hoge dichtheid van containers kunnen er veel op dezelfde virtuele machine worden gehost en zijn ze ideaal voor het leveren van cloudtoepassingen.

Lift-and-shift

Migratie naar de cloud kan voor een organisatie aanzienlijke voordelen opleveren, maar deze organisatie wil de bestaande toepassing mogelijk niet herschrijven. Met behulp van containers kun je je toepassingen naar de cloud migreren zonder dat je de code hoeft te wijzigen.

Batch

Batchverwerking verwijst naar activiteiten die zonder de tussenkomst van de gebruiker kunnen worden uitgevoerd of die kunnen worden uitgevoerd op basis van de beschikbare informatiebronnen. Voorbeelden hiervan zijn het genereren van rapporten, het wijzigen van de grootte van afbeeldingen en het converteren van bestanden van de ene indeling naar de andere. Containers bieden een eenvoudige manier om batchtaken uit te voeren zonder dat je een omgeving en afhankelijkheden hoeft te beheren. Dynamische computingopties, zoals Azure Container Instances (ACI), kunnen worden gebruikt om op efficiënte wijze brongegevens op te nemen, deze te verwerken en in een duurzame opslag, zoals een Azure Blob-opslag, te plaatsen. Wanneer je deze methode toepast, in plaats van statisch ingerichte virtuele machines, kun je een aanzienlijke kostenbesparing realiseren dankzij de facturering per seconde.

Machine learning

Met machine learning worden algoritmen toegepast op gegevens en worden voorspellingen gemaakt op basis van de patronen die in de gegevens worden gevonden. Met containers kun je ervoor zorgen dat machine learning-toepassingen in elke omgeving zelfstandig kunnen functioneren en eenvoudig kunnen worden geschaald.

Terug naar tabbladen

Aanvulling op het gebruik van containers

Gebruik volledige oplossingen, inclusief hulpprogramma's en services die voor containers zijn geoptimaliseerd en waarmee je flexibiliteit, beveiliging en schaalbaarheid realiseert. Op die manier kun je de voordelen van containers ten volle benutten.

Indeling

Voor het op schaal uitvoeren van containers moeten gedistribueerde containertoepassingen via een platform voor het organiseren van containers als Kubernetes worden ingedeeld en beheerd.

Beveiliging

Voor containers is een gelaagde aanpak vereist, van containerinstallatiekopie tot clusterisolatie. De configuratie van deze richtlijnen kan het beste plaatsvinden via je CI/CD-pijplijnen.

Serverloze containers

Je kunt de flexibiliteit nog verder vergroten met containers op aanvraag. Gebruik serverloze containertechnologieën om eenvoudig containers uit te voeren zonder servers en een grote toename in verkeer vanaf je Kubernetes-clusters te beheren wanneer het verkeer pieken vertoont.

Azure DevOps

DevOps

Met containers kunnen ontwikkelaars eenvoudig software en afhankelijkheden delen in verschillende IT- en productieomgevingen. In combinatie met DevOps-methoden kun je code sneller leveren en de cycli voor softwareontwikkeling verkorten.

Je kunt op elk gewenst moment containers en Kubernetes gratis uitproberen met Azure 
Gratis starten