Containerteknik, även känd som en behållare, är en metod för att paketera en applikation så att den kan köras, med dess beroenden, isolerade från andra processer. De stora offentliga datatjänsterna för cloud computing, inklusive Amazon Web Services, Microsoft Azure och Google Cloud Platform, har omfamnat behållarteknik, med behållarprogramvaran med namn, inklusive de populära valen Docker, Apache Mesos, Rkt (uttalad “raket”) och Kubernetes.

Containertekniken får sitt namn från fraktbranschen. I stället för att komma fram till ett unikt sätt att skicka varje produkt, placeras varor i stålbehållare, vilka redan är avsedda att hämtas av kranen på kajen och passar in i fartyget som är utformat för att rymma behållarens standardstorlek. Kort sagt, genom att standardisera processen och hålla objekten ihop kan behållaren flyttas som en enhet, och det kostar mindre att göra det på så sätt.

Med datorbehållarteknik är det en analog situation. Har någonsin situationen där ett program körs perfekt bra på en maskin, men blir då en klumpig röra när den flyttas till nästa? Detta har potential att uppstå vid överföring av programvaran från en utvecklarens dator till en testserver eller en fysisk server i ett företagsdatacenter till en molneserver. Problem uppstår vid flyttning av programvara på grund av skillnader mellan maskinmiljöer, till exempel installerade operativsystem, SSL-bibliotek, lagring, säkerhet och nätverkstopologi.

Precis som att kranen plockar upp hela behållaren som en enhet för att sätta den på skeppet eller lastbilen för transport, vilket underlättar rörelsen, uppnår datorbehållartekniken samma sak. Behållartekniken innehåller inte bara mjukvaran utan även beroenden, inklusive bibliotek, binärer och konfigurationsfiler, alla tillsammans, och de flyttas som en enhet och undviker skillnaderna mellan maskiner, inklusive OS-skillnader och underliggande hårdvara som leder till inkompatibiliteter och kraschar. Containrar underlättar också distribution av programvara till en server.

Virtuella maskiner

Innan behållare blev populär, var ett tidigare tillvägagångssätt virtuella maskiner. Här kunde en fysisk server användas för flera applikationer via virtualiseringsteknik, även känd som en virtuell maskin, där varje virtuell maskin innehåller hela operativsystemet såväl som applikationen att köra.

Den fysiska servern än kör flera virtuella maskiner, var och en med sitt eget operativsystem, med ett enda hypervisoremuleringslager ovanpå. Genom att köra flera OS 'samtidigt finns det mycket överhuvudtaget på servern när resurserna används och antalet virtuella maskiner är begränsat till några få.

Däremot körs servern med en enda operativsystem med behållarteknik, eftersom varje behållare kan dela det här operativsystemet med de andra behållarna på servern. Delarna av operativsystemet som delas läses endast för att inte störa de andra behållarna. Det innebär att behållare i jämförelse med virtuella maskiner kräver mindre resurser på servern med lägre kostnader och är betydligt effektivare, så att mycket fler behållare kan packas på en enda server. Till exempel, medan varje virtuell maskin kan kräva gigabyte av lagring, kan varje behållare som kör ett liknande program bara behöva megabyte.

Hur fungerar behållare?

Containrar är inrättade för att utföra arbete i en multipelbehållararkitektur, betecknad ett behållarkluster. I ett Kubernetes containerkluster finns en enda klustermästare, med de andra relaterade behållarna betecknade som noder, det vill säga de multipla arbetsmaskinerna. Klustermästarens roller är att schemalägga arbetsbelastningen för noderna, och också att hantera sin livscykel och deras uppgraderingar.

Containerteknologi är inte ett nytt fenomen, och har länge varit en kärnfunktion för Linux. Förskottet under de senaste åren av containerteknik har blivit lättare att använda, och programutvecklare har tagit om dem för sin enkelhet och undviker kompatibilitetsproblem. De möjliggör också att ett program bryts ner i mindre bitar, som är kända som mikrotjänster.

Fördelen med att ha programmet som komponentmikroservice är att olika lag kan arbeta på var och en av behållarna separat så länge som interaktionerna mellan de olika behållarna bibehålls, vilket underlättar att utveckla programvara snabbare. Slutligen tillåter behållartekniken fullständig granulär kontroll över behållarna.

Medan behållare kan köra alla typer av programvara, äldre program som utformades för att köras på en virtuell maskin, migrerar inte bra till behållartekniken. Denna äldre programvara som körs på en virtuell maskin kan sättas på en molnplattform som Microsoft Azure, så behållare kan inte helt ersätta virtuella maskiner under överskådlig framtid.

Hur hanterar företag behållare?

Med så mycket mjukvara som körs, har hanteringen av behållarna nu blivit ett krav, och det är svårt att borderline omöjligt att utföra denna uppgift manuellt. Specialiserad mjukvara för containerhantering krävs, och en populär öppen källkodslösning är Kubernetes, som har flera distribueringar inklusive Red Hat OpenShift. Container management mjukvara underlättar utplacering av behållare, och fungerar bra med de snabba implementeringsstrategierna i DevOps-filosofin.

En annan stor egenskap hos behållarteknik är dess flexibilitet. Med en virtuell maskin krävs det flera minuter att starta upp, precis som datorn på skrivbordet startar upp i början av dagen. Snarare med behållarteknik, eftersom operativsystemet redan körs på servern kan en behållare startas om några sekunder. Detta gör att behållare kan startas och stoppas vid behov, för att böjas vid tidpunkten för topp efterfrågan och att böjas ner när det inte behövs.

Dessutom kan om en behållare kraschar, det kan startas om snabbt så att den kan komma tillbaka till uppgiften. Denna typ av hantering är känd som containerorkestering och programvara som Docker Swarm kan styra denna typ av orkestration och distribuera uppgifterna bland behållarklustret.

Eftersom flera containrar delar samma operativsystem är det oroande att behållartekniken är mindre säker än en virtuell maskin. Detta beror på att om det finns en säkerhetsfel i värdkärnan kommer det att påverka flera behållare. Åtgärder har gjorts för att göra behållare säkrare. Ett tillvägagångssätt innefattar dockare som kräver en signeringsinfrastruktur för att förhindra att obehöriga containrar startar upp. Det finns också behållaresäkerhetsprogram, som Twistlock som profilerar behållarens beteende, och stänger sedan en behållare som faller utanför den förväntade profilen.

  • Vi diskuterar också hybridmoln här