Containertechnologie, ook wel bekend als slechts een container, is een methode om een ​​toepassing te verpakken, zodat deze kan worden uitgevoerd, met zijn afhankelijkheden, geïsoleerd van andere processen. De grote publieke cloud computing-providers, waaronder Amazon Web Services, Microsoft Azure en Google Cloud Platform, hebben containetechnologie omarmd, met containersoftware met namen waaronder de populaire keuzes van Docker, Apache Mesos, rkt (uitgesproken “raket”) en Kubernetes.

Containertechnologie dankt zijn naam aan de scheepvaartindustrie. In plaats van een unieke manier te bedenken om elk product te verzenden, worden goederen in stalen verzendcontainers geplaatst, die al zijn ontworpen om door de kraan op het dock te worden opgehaald en in het schip passen, ontworpen om te voldoen aan de standaardafmetingen van de container. Kortom, door het proces te standaardiseren en de items bij elkaar te houden, kan de container als een eenheid worden verplaatst en kost het minder om het op deze manier te doen.

Met computercontainertechnologie is dit een analoge situatie. Ooit de situatie gehad waarin een programma perfect werkt op één machine, maar dan verandert in een onhandige puinhoop wanneer het naar de volgende wordt verplaatst? Dit kan optreden bij het migreren van de software van de pc van een ontwikkelaar naar een testserver of een fysieke server in een bedrijfsdatacenter, naar een cloudserver. Er doen zich problemen voor bij het verplaatsen van software vanwege verschillen tussen machine-omgevingen, zoals het geïnstalleerde besturingssysteem, SSL-bibliotheken, opslag, beveiliging en netwerktopologie.

Net zoals de kraan de hele container oppakt als een eenheid om het op het schip of de vrachtwagen te plaatsen voor transport, wat de beweging vergemakkelijkt, volbrengt de computercontainertechnologie hetzelfde. De containerechnologie bevat niet alleen de software, maar ook de afhankelijkheden, waaronder bibliotheken, binaire bestanden en configuratiebestanden, allemaal samen en ze worden als een eenheid gemigreerd, waarbij verschillen tussen machines worden vermeden, inclusief OS-verschillen en onderliggende hardware die leiden tot incompatibiliteit en crashes. Containers vergemakkelijken ook de inzet van software op een server.

Virtuele machines

Voordat containers populair werden, was een eerdere benadering virtuele machines. Hier kon één fysieke server worden gebruikt voor meerdere applicaties via virtualisatietechnologie, ook wel een virtuele machine genoemd, waarbij elke virtuele machine het volledige besturingssysteem bevat, evenals de toepassing die moet worden uitgevoerd.

De fysieke server draait dan meerdere virtuele machines, elk met een eigen besturingssysteem, met bovenop een enkele hypervisor-emulatielaag. Door meerdere besturingssystemen gelijktijdig te gebruiken, is er veel overhead op de server naarmate resources worden gebruikt en het aantal virtuele machines is beperkt tot maar een paar.

In tegenstelling hiermee stelt de server met containertechnologie één besturingssysteem in, omdat elke container dit ene OS met de andere containers op de server kan delen. De delen van het OS die worden gedeeld, worden alleen gelezen om de andere containers niet te hinderen. Dit betekent dat containers in vergelijking met virtuele machines minder resources van de server met een lagere overhead nodig hebben en aanzienlijk efficiënter zijn, zodat er veel meer containers op één server kunnen worden verpakt. Hoewel elke virtuele machine bijvoorbeeld gigabytes aan opslagruimte nodig heeft, heeft elke container met een vergelijkbaar programma mogelijk alleen megabytes nodig.

Hoe werken containers??

Containers zijn ingesteld om te werken in een meervoudige containerarchitectuur, een containercluster genoemd. In een Kubernetes-containercluster is er één clustermaster, met de andere gerelateerde containers aangeduid als knooppunten, de machines voor meerdere werknemers. De rollen van de clustermaster zijn om de werkbelastingen voor de knooppunten te plannen en ook om hun levenscyclus en hun upgrades te beheren.

Containertechnologie is geen nieuw fenomeen en is al lang een kernelement voor Linux. De vooruitgang in de afgelopen jaren van containerechnologie is het gemakkelijker geworden om te gebruiken, en softwareontwikkelaars hebben ze omarmd vanwege hun eenvoud en compatibiliteitsproblemen. Ze maken het ook mogelijk een programma op te splitsen in kleinere stukjes, die microservices worden genoemd.

Het voordeel van het hebben van het programma als componentmicroservices is dat verschillende teams afzonderlijk aan elk van de containers kunnen werken, zolang de interacties tussen de verschillende containers worden onderhouden, wat het ontwikkelen van software sneller maakt. Ten slotte maakt de containetechnologie volledige granulaire controle over de containers mogelijk.

Hoewel containers alle soorten software kunnen uitvoeren, migreren oudere programma's die zijn ontworpen om op een virtuele machine te worden uitgevoerd, niet goed naar de containerechnologie. Deze oudere software die op een virtuele machine wordt uitgevoerd, kan op een cloudplatform zoals Microsoft Azure worden geplaatst, zodat containers waarschijnlijk niet in de nabije toekomst volledig zullen worden vervangen door virtuele machines..

Hoe beheren bedrijven containers?

Met zoveel software die als containers wordt uitgevoerd, is het beheer van de containers nu een vereiste geworden en is het moeilijk om deze taak handmatig uit te voeren. Gespecialiseerde software voor containerbeheer is vereist en een populaire open source-oplossing is Kubernetes, die verschillende distributies heeft, waaronder Red Hat OpenShift. Containerbeheersoftware maakt de inzet van containers mogelijk en werkt goed samen met de snelle implementatiestrategieën van de DevOps-filosofie.

Een ander fantastisch kenmerk van containerechnologie is de flexibiliteit. Bij een virtuele machine duurt het enkele minuten om op te starten, net zoals de pc op je bureau aan het begin van de dag wordt opgestart. Integendeel, met containertechnologie, aangezien het besturingssysteem al op de server draait, kan binnen enkele seconden een container worden gestart. Hierdoor kunnen containers worden gestart en gestopt wanneer nodig, om te buigen in een tijd van piekvraag en om te buigen wanneer dit niet nodig is.

Als een container vastloopt, kan deze bovendien snel opnieuw worden opgestart om weer toegang te krijgen tot de taak. Dit type management staat bekend als container orchestration en software zoals Docker Swarm kan dit type orkestratie besturen en de taken verdelen over het containercluster..

Omdat meerdere containers hetzelfde besturingssysteem gebruiken, bestaat de vrees dat de containerechnologie minder veilig is dan een virtuele machine. Dit is het gevolg van het feit dat er een beveiligingsfout in de host-kernel is die meerdere containers zal beïnvloeden. Er zijn inspanningen geleverd om containers veiliger te maken. Eén benadering houdt in dat Docker een ondertekeningsinfrastructuur nodig heeft om te voorkomen dat ongeautoriseerde containers worden opgestart. Er is ook containerbeveiligingssoftware, zoals Twistlock, die het gedrag van een container analyseert en vervolgens een container afsluit die buiten het verwachte profiel valt.

  • We bespreken hier ook hybride cloud