Vad är en container?

Standardiserad, portabel paketering för dina program

Beskrivning av containrar

Precis som fraktbolag använder fysiska containrar för att isolera olika laster – till exempel som transporteras på fartyg och tåg – utnyttjar tekniker för programutveckling allt mer en metod som kallas containerisering.

Ett standardprogramvarupaket – vilket kallas en container – paketerar koden för ett program tillsammans med relaterade konfigurationsfiler och bibliotek, och med de beroenden som krävs för att appen ska köras. Detta gör att utvecklare och IT-experter kan distribuera program sömlöst i olika miljöer.

Kom igång med Docker

Varför du ska bry dig om containrar

Problemet med ett program som inte kan köras korrekt när det flyttas från en miljö till en annan har funnits lika länge som programutveckling. Sådana problem uppstår vanligtvis på grund av skillnader i konfigurationen, underliggande bibliotekskrav och andra beroenden.

Med containrar hanteras problemet genom att de tillhandahåller en lätt, oföränderlig infrastruktur för paketering och distribution av program. Ett program eller en tjänst, dess beroenden och dess konfiguration paketeras tillsammans som en containeravbildning. Det containeriserade programmet kan testas som en enhet och distribueras som en containeravbildningsinstans till värdoperativsystemet.

På så sätt gör containrar att utvecklare och IT-experter kan distribuera program i olika miljöer med små eller inga ändringar.

Läs mer om containrars ursprung och fördelar.

Titta på en kort video

Container jämfört med virtuell dator

När man tänker på virtualisering handlar det ofta om virtuella datorer (VM). Virtualisering kan i själva verket se ut på många olika sätt, och containrar är ett av dem. Vad är då skillnaden mellan virtuella datorer och containrar?

På hög nivå virtualiserar virtuella datorer den underliggande maskinvaran så att flera operativsystemsinstanser (OS) kan köras på maskinvaran. Varje virtuell dator kör ett operativsystem och har åtkomst till virtualiserade resurser som representerar den underliggande maskinvaran.

Virtuella datorer har många fördelar. Här ingår möjligheten att köra olika operativsystem på samma server, effektivare och kostnadseffektivare användning av fysiska resurser och snabbare serveretablering. Å andra sidan innehåller varje virtuell dator en OS-avbildning, bibliotek, program och mycket mer och kan därför bli ganska stor.

En container virtualiserar det underliggande operativsystemet och gör att den containeriserade appen uppfattar det som att den har operativsystemet – inklusive CPU, minne, fillagring och nätverksanslutningar – helt själv. Eftersom skillnaderna i underliggande operativsystem och infrastruktur abstraheras kan containern distribueras och köras var som helst så länge basavbildningen är konsekvent. Detta är otroligt attraktivt för utvecklare.

Eftersom containrar delar värdoperativsystemet behöver de inte starta ett operativsystem eller läsa in bibliotek. Detta gör att containrar kan vara mycket effektivare och lättare. Containeriserade program kan starta på några sekunder och många fler instanser av programmet ryms på datorn jämfört med ett scenario med virtuella datorer. Metoden med delat operativsystem har den ytterligare fördelen med minskad omkostnad när det gäller underhåll, till exempel uppdateringar.

Även om containrar är portabla är de begränsade till det operativsystem som de har definierats för. En container för Linux kan till exempel inte köras på Windows och tvärtom.

Varför containrar?

Smidighet

När utvecklare skapar och paketerar sina program i containrar och ger dem till IT-avdelningen för att köras på en standardiserad plattform minskar detta det övergripande arbetet med att distribuera program och kan effektivisera hela utvecklings- och testningscykeln. Detta ökar också samarbetet och effektiviteten mellan utvecklings- och driftsteam för att leverera appar snabbare.

Portabilitet

Containrar utgör ett standardiserat format för paketering och lagring av alla komponenter som krävs för att köra det önskade programmet. Detta löser det vanliga problemet med att ”det fungerar på min dator” och möjliggör portabilitet mellan OS-plattformar och mellan moln. När en container distribueras någonstans körs den i en enhetlig miljö som förblir oförändrad från en distribution till en annan. Nu har du ett enhetligt format, från utveckling till produktion.

Snabb skalbarhet

Eftersom containrar inte medför den vanliga omkostnaden för virtuella datorer, inklusive separata OS-instanser, kan många fler containrar hanteras i samma infrastruktur. Containrars lätta karaktär innebär att de kan startas och stoppas snabbt, vilket möjliggör scenarier med snabb uppskalning och nedskalning.

Användningsfall

Molnbaserade program

Molnbaserade program är beroende av containrar för en gemensam driftsmodell i olika miljöer, inklusive offentlig, privat och hybrid. Containrars låga omkostnad och höga densitet gör att många av dem kan lagras i samma virtuella dator och gör dem perfekta för att leverera molnbaserade program.

Lift and shift

En organisation kan ta del av betydande fördelar genom att migrera till molnet, men kanske inte vill skriva om ett befintligt program. Med hjälp av containrar kan du eventuellt migrera dina program till molnet utan att ändra någon kod.

Batch

Batchbearbetning avser aktiviteter som kan utföras utan mänsklig inblandning eller som kan utföras utifrån tillgängliga resurser. Exempel på detta är att generera rapporter, ändra storlek på bilder och konvertera filer från ett format till ett annat. Containrar ger ett enkelt sätt att köra batchjobb utan att behöva hantera en miljö och beroenden. Dynamiska beräkningsalternativ som Azure Container Instances (ACI) kan användas för att effektivt mata in källdata, bearbeta dem och placera dem i robust lagring, till exempel Azure Blob Storage. Om du använder en sådan metod i stället för statiskt etablerade virtuella datorer kan du göra stora besparingar genom att använda fakturering per sekund.

Machine Learning

Maskininlärning tillämpar algoritmer på data och skapar förutsägelser utifrån mönster som hittas i dessa data. Containrar kan göra maskininlärningsprogram självständiga och enkelt skalbara i alla miljöer.

Utöver containrar

För att maximera fördelarna med containrar bör du överväga kompletta lösningar med containeroptimerade verktyg och tjänster som hjälper dig att uppnå flexibilitet, säkerhet och skala.

Orkestrering

Att köra containrar i stor skala kräver orkestrering och hantering av distribuerade, containeriserade program via en orkestreringsplattform, till exempel Kubernetes.

Utforska Kubernetes med Azure

Säkerhet

Med containrar krävs en flerlagersmetod, från containeravbildning till klusterisolering. Konfigurationen av de här efterlevnadsriktlinjerna görs bäst med dina CI/CD-pipelines.

Ta en titt på grundläggande säkerhet för containrar och Kubernetes

Containrar utan server

Du kan förbättra flexibiliteten ytterligare med containrar på begäran. Använd serverlösa containertekniker för att enkelt köra containrar utan att hantera servrar och burst från dina Kubernetes-kluster när trafiken kommer i toppar.

Prova serverlösa containrar

DevOps

Med containrar kan utvecklare enkelt dela programvara och beroenden mellan IT- och produktionsmiljöer. När de kombineras med DevOps-metoder kan du effektivt leverera kod snabbare och förkorta programutvecklingscykler.

Se guiden DevOps med Azure

Resurser

Redo när du är – prova containrar och Kubernetes kostnadsfritt med Azure