Programmering

Hvorfor skal du bruge Docker og containere

En bog udgivet i 1981, kaldetNegle gelé til et træ, beskriver software som "tåget og svært at få et godt greb om." Det var sandt i 1981, og det er ikke mindre sandt næsten fire årtier siden. Uanset om det er et program, du har købt, eller et program, du selv har bygget, er det stadig svært at implementere, svært at administrere og svært at køre.

Docker-containere giver en måde at få styr på software på. Du kan bruge Docker til at afslutte et program på en sådan måde, at dets implementerings- og runtime-problemer - hvordan man udsætter det på et netværk, hvordan man styrer dets brug af lager og hukommelse og I / O, hvordan man styrer adgangstilladelser - håndteres uden for selve applikationen og på en måde, der er konsistent på tværs af alle "containeriserede" apps. Du kan køre din Docker-container på enhver OS-kompatibel vært (Linux eller Windows), der har Docker-runtime installeret.

Docker tilbyder mange andre fordele udover denne praktiske indkapsling, isolering, bærbarhed og kontrol. Docker-containere er små (megabyte). De starter med det samme. De har deres egne indbyggede mekanismer til versionering og genbrug af komponenter. De kan let deles via det offentlige Docker Hub eller private arkiv.

I denne artikel vil jeg undersøge, hvordan Docker-containere gør det lettere at både opbygge og implementere software - problemerne, containere adresserer, hvordan de adresserer dem, hvornår de er det rigtige svar på problemet, og når de ikke er det.

Før Docker-containere

I mange år er virksomhedssoftware typisk blevet implementeret enten på "bare metal" (dvs. installeret på et operativsystem, der har fuld kontrol over den underliggende hardware) eller i en virtuel maskine (dvs. installeret på et operativsystem, der deler den underliggende hardware med andre "gæst" -systemer). Installation på blåt metal gjorde det naturligvis smertefuldt vanskeligt at flytte rundt og vanskeligt at opdatere - to begrænsninger, der gjorde det svært for IT at reagere let på ændringer i forretningsbehov.

Derefter kom virtualisering. Virtualiseringsplatforme (også kendt som “hypervisors”) tillod flere virtuelle maskiner at dele et enkelt fysisk system, hvor hver virtuel maskine efterligner et helt systems opførsel, komplet med sit eget operativsystem, opbevaring og I / O på en isoleret måde . IT kunne nu reagere mere effektivt på ændringer i forretningskrav, fordi virtuelle computere kunne klones, kopieres, migreres og spindes op eller ned for at imødekomme efterspørgsel eller spare ressourcer.

Virtuelle maskiner hjalp også med at reducere omkostningerne, fordi flere virtuelle maskiner kunne konsolideres til færre fysiske maskiner. Ældre systemer, der kører ældre applikationer, kunne omdannes til virtuelle computere og fysisk afvikles for at spare endnu flere penge.

Men virtuelle maskiner har stadig deres andel af problemer. Virtuelle maskiner er store (gigabyte), hver med et komplet operativsystem. Kun så mange virtualiserede apps kan konsolideres til et enkelt system. Tilvejebringelse af en VM tager stadig ret lang tid. Endelig er bærbarheden af ​​VM'er begrænset. Efter et bestemt punkt er virtuelle maskiner ikke i stand til at levere den slags hastighed, smidighed og besparelser, som virksomheder i hurtig bevægelse kræver.

Fordele ved Docker-container

Containere fungerer lidt som VM'er, men på en langt mere specifik og detaljeret måde. De isolerer en enkelt applikation og dens afhængigheder - alle de eksterne softwarebiblioteker, som appen kræver for at køre - både fra det underliggende operativsystem og fra andre containere. Alle de containeriserede apps deler et enkelt, fælles operativsystem (enten Linux eller Windows), men de er opdelt fra hinanden og fra systemet som helhed.

Fordelene ved Docker-containere vises mange steder. Her er nogle af de største fordele ved Docker og containere:

Docker muliggør mere effektiv brug af systemressourcer

Forekomster af containeriserede apps bruger langt mindre hukommelse end virtuelle maskiner, de starter og stopper hurtigere, og de kan pakkes langt tættere på deres værtshardware. Alt dette svarer til mindre udgifter til IT.

Omkostningsbesparelserne varierer afhængigt af, hvilke apps der er i spil, og hvor ressourceintensive de kan være, men containere fungerer altid som mere effektive end virtuelle computere. Det er også muligt at spare på omkostningerne til softwarelicenser, fordi du har brug for mange færre operativsystemforekomster for at køre de samme arbejdsbelastninger.

Docker muliggør hurtigere softwareleveringscyklusser

Virksomhedssoftware skal reagere hurtigt på skiftende forhold. Det betyder både let skalering for at imødekomme efterspørgslen og let opdatering for at tilføje nye funktioner, som virksomheden kræver.

Docker-containere gør det nemt at sætte nye versioner af software med nye forretningsfunktioner i produktion hurtigt - og hurtigt rulle tilbage til en tidligere version, hvis du har brug for det. De gør det også nemmere at implementere strategier som blå / grønne implementeringer.

Docker muliggør applikationsportabilitet

Hvor du driver en virksomhedsapplikation, betyder det noget - bag firewallen for at holde tingene tæt på og sikre; eller ude i en offentlig sky for nem offentlig adgang og høj elasticitet af ressourcer. Da Docker-containere indkapsler alt, hvad en applikation har brug for at køre (og kun disse ting), tillader de, at applikationer let kan skiftes mellem miljøer. Enhver vært med Docker-runtime installeret - det være sig en udviklerens bærbare computer eller en offentlig skyinstans - kan køre en Docker-container.

Docker skinner til mikrotjenestearkitektur

Letvægts, bærbare og selvstændige Docker-containere gør det lettere at bygge software langs fremadrettede linjer, så du ikke prøver at løse morgendagens problemer med gårsdagens udviklingsmetoder.

En af softwaremønsterbeholdere gør det lettere er mikrotjenester, hvor applikationer er sammensat af mange løst koblede komponenter. Ved at nedbryde traditionelle, "monolitiske" applikationer til separate tjenester, tillader mikroservices, at de forskellige dele af en forretningsapp kan skaleres, modificeres og serviceres separat - af separate teams og på separate tidslinjer, hvis det passer til behovene i forretning.

Containere er ikke påkrævet for at implementere mikrotjenester, men de er perfekt egnet til mikroservicetilgangen og til agile udviklingsprocesser generelt.

Problemer Docker-containere løser ikke

Den første ting at huske på containere er det samme råd, der gælder for enhver softwareteknologi: Dette er ikke en sølvkugle. Docker-containere på egen hånd kan ikke løse ethvert problem. I særdeleshed:

Docker løser ikke dine sikkerhedsproblemer

Software i en container kan som standard være mere sikker end software, der kører på blottet metal, men det er som at sige, at et hus med låste døre er sikrere end et hus, hvor dørene er låst op. Det siger ikke noget om kvarterets tilstand, den synlige tilstedeværelse af værdigenstande, der frister til en tyv, rutinerne for de mennesker, der bor der osv. Containere kan tilføje et lag af sikkerhed til en app, men kun som en del af et generelt program til sikring af en app i kontekst.

Docker gør ikke applikationer magisk til mikrotjenester

Hvis du containeriserer en eksisterende app, kan det reducere ressourceforbruget og gøre det lettere at implementere. Men det ændrer ikke automatisk design af appen, eller hvordan den interagerer med andre apps. Disse fordele kommer kun gennem udviklerens tid og kræfter, ikke kun et mandat til at flytte alt i containere.

Læg en old-school monolitisk eller SOA-app i en container, og du ender med, ja, en gammel app i en container. Det gør det ikke mere nyttigt for dit arbejde; hvis noget, kan det gøre det mindre nyttigt.

Docker er ikke en erstatning for virtuelle maskiner

En vedvarende myte om containere er, at de gør virtuelle computere forældede. Mange apps, der før kørte i en VM kan flyttes ind i en container, men det betyder ikke alle af dem kan eller bør. Hvis du f.eks. Er i en branche med tunge lovgivningsmæssige krav, kan du muligvis ikke bytte containere til VM'er, fordi VM'er giver mere isolering end containere.

Sagen for Docker-containere

Virksomhedsudviklingsarbejde er berygtet for at være skjult og langsomt at reagere på ændringer. Virksomhedsudviklere undgår sådanne begrænsninger hele tiden - de begrænsninger, IT pålægger dem, kravene fra virksomheden som helhed. Docker og containere giver udviklere mere frihed, de ønsker, og giver samtidig måder til at oprette forretningsapps, der reagerer hurtigt på skiftende forretningsforhold.

$config[zx-auto] not found$config[zx-overlay] not found