Hvornår skal du bruge Docker-objektbeholdere?

Fuldført

Som vi har lært, har Docker flere funktioner, som vi kan bruge. Her ser vi på de fordele, Docker giver vores udviklings- og driftsteams. Vi vil også se på et par scenarier, hvor Docker muligvis ikke er det bedste valg.

Disse aspekter hjælper dig med at beslutte, om Docker passer godt til din strategi for objektbeholderisering.

Husk fra tidligere, at der er en række udfordringer vores team står over for, når de udvikler og publicerer vores ordresporingsportal. De leder efter en løsning på:

  • Administrer nemt vores hostingmiljøer.
  • Garanti for kontinuitet i, hvordan vi leverer vores software.
  • Sørg for, at vi bruger serverhardware effektivt.
  • Gør det muligt at overføre vores programmer.

Docker er en løsning på disse udfordringer. Lad os se på alle de fordele, vi har dækket indtil videre.

Fordele ved Docker

Når vi bruger Docker, får vi straks adgang til de fordele, som objektbeholderisering tilbyder.

Effektiv hardwareanvendelse

Objektbeholdere kører uden brug af en virtuel maskine (VM). Som vi har lært, er objektbeholderen afhængig af værtskernen for funktioner som f.eks. filsystem, netværksadministration, procesplanlægning og hukommelsesstyring.

diagram, der kontrasterer brug af VM-ressourcer i forhold til brug af Docker-ressourcer.

Sammenlignet med en VM kan vi se, at en VM kræver, at der er installeret et operativsystem for at levere kernefunktioner til de kørende programmer i vm'en. Vær opmærksom på, at VM-operativsystemet også kræver diskplads, hukommelse og CPU-tid. Ved at fjerne vm'en og det ekstra operativsystemkrav kan vi frigøre ressourcer på værten og bruge den til at køre andre objektbeholdere.

Objektbeholderisolation

Docker-objektbeholdere indeholder sikkerhedsfunktioner til at køre flere objektbeholdere samtidigt på den samme vært uden at påvirke hinanden. Som vi har lært, kan vi konfigurere både datalager- og netværkskonfiguration for at isolere vores objektbeholdere eller dele data og forbindelser mellem bestemte objektbeholdere.

Lad os sammenligne denne funktion med at bruge VM'er.

diagram, der viser en fysisk vært, der kører flere VM'er.

Antag, at vi har en fysisk vært, der kører to VM'er. Vi har tre programmer, som vi vil køre isoleret fra hinanden. Vi beslutter at udrulle den første app på VM1 og den anden på VM2 for at adskille de to apps fra hinanden. Hvis vi nu vælger at installere det tredje program, skal vi installere en anden VM for at fortsætte dette mønster.

Programportabilitet

Objektbeholdere kører næsten overalt: stationære computere, fysiske servere, VM'er og i cloudmiljøet. Denne kørselskompatibilitet gør det nemt at flytte programmer i objektbeholdere mellem forskellige miljøer.

Da objektbeholdere er lette, lider de ikke under langsomme start- eller lukningstider som VM'er. Dette aspekt gør geninstallation og andre udrulningsscenarier – f.eks. op- eller nedskalering – jævne og hurtige.

Programlevering

Med Docker bliver objektbeholderen den enhed, vi bruger til at distribuere programmer. Dette koncept sikrer, at vi har et standardiseret objektbeholderformat, både vores udvikler- og driftsteams bruger. Vores udviklere kan fokusere på at udvikle software, og driftsteamet kan fokusere på udrulning og administration af software.

Vi kan bruge objektbeholderen i hvert trin i vores udrulningssystem, når vores udviklingsteam udgiver et build af vores program. Objektbeholdere er ideelle kandidater til kontinuerlig integration og fremskynder tiden fra build til produktion.

Administration af værtsmiljøer

Vi konfigurerer vores programs miljø internt til objektbeholderen. Denne begrænsning giver vores driftsteam fleksibilitet til at administrere programmets miljø meget tættere på. Vores team kan overvåge OS-opdateringer, anvende sikkerhedsrettelser én gang og udrulle den opdaterede objektbeholder efter behov.

Vores team kan også administrere, hvilke programmer der skal installeres, opdateres og fjernes, uden at det påvirker andre objektbeholdere. Hver objektbeholder er isoleret og har tildelt sine ressourcegrænser separat fra andre objektbeholdere.

Cloudinstallationer

Docker-objektbeholdere er standardarkitekturen for objektbeholdere, som Azure-objektbeholdertjenester bruger, og mange andre cloudplatforme understøtter dem også.

Du kan f.eks. udrulle Docker-objektbeholdere til Azure Container Instances, Azure App Service og Azure Kubernetes Services. Hver af disse indstillinger giver dig forskellige funktioner og egenskaber.

Azure-objektbeholderforekomster giver dig f.eks. mulighed for at fokusere på at designe og bygge dine programmer uden at skulle administrere infrastrukturen. Når du har mange objektbeholdere at orkestrere, gør Azure Kubernetes-tjenesten det nemt at udrulle og administrere store objektbeholderinstallationer.

Når du ikke skal bruge Docker-objektbeholdere

Docker-objektbeholdere giver mange fordele, men vær opmærksom på, at objektbeholdere muligvis ikke opfylder alle dine krav. Der er et par aspekter, du skal være opmærksom på.

Sikkerhed og virtualisering

Objektbeholdere giver et isolationsniveau. Objektbeholdere deler dog en enkelt værts-OS-kerne, som kan være et enkelt angrebspunkt.

Windows-værter leverer en ekstra isolationsmodel, hvor en specialbygget VM kan bruges til at isolere objektbeholderen på hypervisorniveau. Denne tilstand kaldes Hyper-V isolationstilstand og tilføjer endnu et sikkerhedslag mellem objektbeholdere og objektbeholdervært.

Vi skal også tage højde for aspekter som lagring og netværk for at sikre, at vi tager alle sikkerhedsaspekter i betragtning. Alle objektbeholdere bruger f.eks. som standard bronetværket og kan få adgang til hinanden via IP-adresse.

Det er ikke alle programmer, der drager fordel af objektbeholderisering. I sådanne tilfælde kan det give mere mening at bruge en VM.

Tjenesteovervågning

Administration af programmer og objektbeholdere er mere kompliceret end traditionelle VM-installationer. Der er logføringsfunktioner, der fortæller os om tilstanden af de kørende objektbeholdere, men mere detaljerede oplysninger om tjenester i objektbeholderen er sværere at overvåge.

Docker giver os f.eks. kommandoen docker stats. Denne kommando returnerer oplysninger om objektbeholderen, f.eks. procent CPU-forbrug, procentdel af hukommelsesforbrug, I/O, der er skrevet til disken, netværksdata, der er sendt og modtaget, og proces-id'er, der er tildelt. Disse oplysninger er nyttige som en øjeblikkelig datastrøm. Der udføres dog ingen sammenlægning, fordi dataene ikke er gemt. Vi skal installere tredjepartssoftware til meningsfuld datahentning over en periode.