Programmering

Hvorfor du bør bruke Docker og containere

En bok utgitt i 1981, kaltSpiker gelé til et tre, beskriver programvare som "tåkete og vanskelig å få et fast grep om." Det var sant i 1981, og det er ikke mindre sant nesten fire tiår siden. Programvare, enten det er et program du har kjøpt, eller et du har bygget selv, er fortsatt vanskelig å distribuere, vanskelig å administrere og vanskelig å kjøre.

Docker-containere gir en måte å få tak i programvaren på. Du kan bruke Docker til å pakke inn et program på en slik måte at distribusjons- og kjøretidsproblemer - hvordan du eksponerer det i et nettverk, hvordan du administrerer bruken av lagring og minne og I / O, hvordan du kontrollerer tilgangstillatelser - håndteres. utenfor selve applikasjonen, og på en måte som er konsistent i alle "containeriserte" apper. Du kan kjøre Docker-containeren din på en hvilken som helst OS-kompatibel vert (Linux eller Windows) som har Docker-kjøretiden installert.

Docker tilbyr mange andre fordeler i tillegg til denne praktiske innkapslingen, isolasjonen, bærbarheten og kontrollen. Docker-containere er små (megabyte). De starter umiddelbart. De har sine egne innebygde mekanismer for versjonering og gjenbruk av komponenter. De kan enkelt deles via det offentlige Docker Hub eller private depot.

I denne artikkelen vil jeg undersøke hvordan Docker-containere gjør det lettere å både bygge og distribuere programvare - problemene containere adresserer, hvordan de adresserer dem, når de er det rette svaret på problemet, og når de ikke er det.

Før Docker-containere

I mange år har bedriftsprogramvare vanligvis blitt distribuert enten på "bart metall" (dvs. installert på et operativsystem som har full kontroll over den underliggende maskinvaren) eller i en virtuell maskin (dvs. installert på et operativsystem som deler den underliggende maskinvaren med andre "gjest" -operativsystemer). Installasjon på bart metall gjorde naturligvis programvaren vanskelig å bevege seg rundt og vanskelig å oppdatere - to begrensninger som gjorde det vanskelig for IT å svare raskt på endringer i forretningsbehovet.

Så kom virtualisering. Virtualiseringsplattformer (også kjent som “hypervisors”) tillot flere virtuelle maskiner å dele et enkelt fysisk system, hver virtuelle maskin som etterligner oppførselen til et helt system, komplett med sitt eget operativsystem, lagring og I / O, på en isolert måte . IT kan nå reagere mer effektivt på endringer i forretningskrav, fordi virtuelle maskiner kan klones, kopieres, migreres og spinnes opp eller ned for å møte etterspørsel eller spare ressurser.

Virtuelle maskiner bidro også til å redusere kostnadene fordi flere virtuelle maskiner kunne konsolideres på færre fysiske maskiner. Eldre systemer som kjører eldre applikasjoner kan gjøres om til virtuelle maskiner og fysisk tas i bruk for å spare enda mer penger.

Men virtuelle maskiner har fortsatt sin del av problemene. Virtuelle maskiner er store (gigabyte), som hver inneholder et fullt operativsystem. Bare så mange virtualiserte apper kan konsolideres til et enkelt system. Å klargjøre en virtuell maskin tar fremdeles ganske lang tid. Til slutt er bærbarheten til virtuelle maskiner begrenset. Etter et visst punkt er ikke virtuelle maskiner i stand til å levere den hastigheten, smidigheten og besparelsene som hurtiggående bedrifter krever.

Fordeler med Docker-container

Beholdere fungerer litt som virtuelle maskiner, men på en langt mer spesifikk og detaljert måte. De isolerer et enkelt program og dets avhengigheter - alle eksterne programvarebiblioteker som appen krever for å kjøre - både fra det underliggende operativsystemet og fra andre containere. Alle de containeriserte appene deler et enkelt, vanlig operativsystem (enten Linux eller Windows), men de er delt fra hverandre og fra systemet generelt.

Fordelene med Docker-containere dukker opp mange steder. Her er noen av de største fordelene med Docker og containere:

Docker muliggjør mer effektiv bruk av systemressurser

Forekomster av apper i containere bruker langt mindre minne enn virtuelle maskiner, de starter opp og stopper raskere, og de kan pakkes langt tettere på vertsmaskinvaren. Alt dette utgjør mindre bruk av IT.

Kostnadsbesparelsene vil variere avhengig av hvilke apper som spilles og hvor ressurskrevende de kan være, men containere fungerer alltid som mer effektive enn virtuelle maskiner. Det er også mulig å spare kostnader for programvarelisenser, fordi du trenger mange færre operativsystemforekomster for å kjøre de samme arbeidsmengdene.

Docker muliggjør raskere programvareleveringssykluser

Bedriftsprogramvare må reagere raskt på endrede forhold. Det betyr både enkel skalering for å møte etterspørsel og enkel oppdatering for å legge til nye funksjoner som virksomheten krever.

Docker-containere gjør det enkelt å sette nye versjoner av programvare, med nye forretningsfunksjoner, i produksjon raskt - og å raskt rulle tilbake til en tidligere versjon hvis du trenger det. De gjør det også lettere å implementere strategier som blå / grønne distribusjoner.

Docker muliggjør applikasjonsportabilitet

Hvor du driver en bedriftsapplikasjon, er det viktig - bak brannmuren, for å holde ting i nærheten og sikre; eller ute i en offentlig sky, for enkel offentlig tilgang og høy elastisitet i ressursene. Fordi Docker-containere innkapsler alt et program trenger å kjøre (og bare de tingene), lar de applikasjoner skiftes enkelt mellom miljøer. Enhver vert med Docker-kjøretiden installert - det være seg en bærbar datamaskin for utviklere eller en offentlig skyforekomst - kan kjøre en Docker-container.

Docker skinner for mikrotjenestearkitektur

Lette, bærbare og selvstendige Docker-containere gjør det lettere å bygge programvare langs fremtidsrettede linjer, slik at du ikke prøver å løse morgendagens problemer med gårsdagens utviklingsmetoder.

En av beholderne for programvaremønstre gjør det lettere er mikrotjenester, der applikasjoner består av mange løst koblede komponenter. Ved å dekomponere tradisjonelle, "monolitiske" applikasjoner i separate tjenester, tillater mikrotjenester at de forskjellige delene av en app-virksomhet kan skaleres, modifiseres og betjenes separat - av separate team og på separate tidslinjer, hvis det passer behovene til virksomhet.

Beholdere er ikke påkrevd for å implementere mikrotjenester, men de passer perfekt til mikrotjenestetilnærmingen og til smidige utviklingsprosesser generelt.

Problemer Docker-containere løser ikke

Det første du må huske på om containere er det samme rådet som gjelder enhver programvareteknologi: Dette er ikke en sølvkule. Docker-containere alene kan ikke løse alle problemer. Spesielt:

Docker løser ikke sikkerhetsproblemene dine

Programvare i en container kan være sikrere som standard enn programvare som kjøres på bart metall, men det er som å si at et hus med låste dører er sikrere enn et hus med ulåste dører. Det sier ikke noe om nabolagets tilstand, den synlige tilstedeværelsen av verdisaker som frister til en tyv, rutinene til menneskene som bor der, og så videre. Beholdere kan legge til et sikkerhetslag i en app, men bare som en del av et generelt program for å sikre en app i sammenheng.

Docker gjør ikke applikasjoner magisk til mikrotjenester

Hvis du containeriserer en eksisterende app, kan det redusere ressursforbruket og gjøre det lettere å distribuere. Men det endrer ikke automatisk design av appen, eller hvordan den samhandler med andre apper. Disse fordelene kommer bare gjennom utviklerens tid og krefter, ikke bare et mandat til å flytte alt inn i containere.

Sett en old-school monolitisk eller SOA-stil app i en container, og du ender opp med, vel, en gammel app i en container. Det gjør det ikke mer nyttig for arbeidet ditt; hvis noe, kan det gjøre det mindre nyttig.

Docker er ikke en erstatning for virtuelle maskiner

En vedvarende myte om containere er at de gjør virtuelle maskiner utdaterte. Mange apper som før kjørte i en VM kan flyttes inn i en container, men det betyr ikke alle av dem kan eller burde. Hvis du for eksempel er i en bransje med tunge regulatoriske krav, kan du kanskje ikke bytte containere mot virtuelle maskiner, fordi virtuelle maskiner gir mer isolasjon enn containere.

Saken for Docker-containere

Bedriftsutviklingsarbeid er beryktet for å være skjult og treg til å reagere på endringer. Bedriftsutviklere tapper mot slike begrensninger hele tiden - begrensningene IT pålegger dem, kravene som virksomheten generelt stiller til dem. Docker og containere gir utviklere mer frihet de ønsker, og gir samtidig måter å bygge forretningsapper som reagerer raskt på endrede forretningsforhold.

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