Mange af os mener, at Docker er en integreret del af . Så bag dette utrolige værktøj skal der være en fantastisk arkitektur. I denne blog vil jeg dække alt, hvad du skal vide om Docker-arkitekturen. Dette er de punkter, som jeg vil diskutere her:
Traditionel virtualisering mod Docker
Hvad er en VM (virtuel maskine)?
En VM er en virtuel server, der emulerer en hardwareserver. En virtuel maskine er afhængig af systemets fysiske hardware for at efterligne det nøjagtige samme miljø, som du installerer dine applikationer i. Afhængigt af din brugssag kan du bruge en virtuel systemmaskine (der kører et helt operativsystem som en proces, så du kan erstatte en rigtig maskine med en virtuel maskine) eller behandle virtuelle maskiner, der giver dig mulighed for at udføre computerapplikationer alene i det virtuelle miljø.
Tidligere brugte vi oprettelse af virtuelle maskiner, og hver VM havde et operativsystem, der tog meget plads og gjorde det tungt.
Hvad er Docker?
Docker er et open source-projekt, der tilbyder en softwareudviklingsløsning kendt som containere. For at forstå Docker skal du vide, hvad containere er. Ifølge Docker , en container er en let, enkeltstående, eksekverbar pakke med et stykke software, der indeholder alt, hvad der er nødvendigt for at køre den.
Containere er platformuafhængige, og derfor kan Docker køre på både Windows- og Linux-baserede platforme. Faktisk kan Docker også køres inden for en virtuel maskine, hvis der opstår behov for det. Hovedformålet med Docker er, at det giver dig mulighed for at køre mikroserviceapplikationer i en distribueret arkitektur.
Sammenlignet med virtuelle maskiner bevæger Docker-platformen sig abstraktion af ressourcer fra hardwareniveau til operativsystemniveauet. Dette muliggør realisering af de forskellige fordele ved containere, f.eks. applikationsportabilitet, infrastrukturadskillelse og selvstændige mikrotjenester.
Med andre ord, mens virtuelle maskiner abstraherer hele hardwareserveren, absorberer containere operativsystemets kerne. Dette er en helt anden tilgang til virtualisering og resulterer i meget hurtigere og mere lette forekomster.
saltstak vs marionet vs kok
Docker's Workflow
Lad os først se på Docker Engine og dens komponenter, så vi har en grundlæggende idé om, hvordan systemet fungerer. Docker Engine giver dig mulighed for at udvikle, samle, sende og køre applikationer ved hjælp af følgende komponenter:
Docker Daemon : En vedvarende baggrundsproces, der styrer Docker-billeder, containere, netværk og lagervolumener. Docker-dæmonen lytter konstant til Docker API-anmodninger og behandler dem.
Docker Engine REST API : En API bruges af applikationer til at interagere med Docker-dæmonen. Den kan tilgås af en HTTP-klient.
Docker CLI : En kommandolinjegrænsefladeklient til interaktion med Docker-dæmonen. Det forenkler betydeligt, hvordan du administrerer containerforekomster, og er en af hovedårsagerne til, at udviklere elsker at bruge Docker.
I første omgang taler Docker-klienten til Docker-dæmonen, som udfører tunge løft af bygningen, kører samt distribuerer vores Docker-containere. Grundlæggende kan både Docker-klienten og dæmonen køre på det samme system. Vi kan også forbinde en Docker-klient til enfjern Docker-dæmon. Derudover kommunikerer Docker-klienten og dæmonen ved hjælp af en REST API over UNIX-stik eller en netværksgrænseflade.
Docker-arkitektur
Arkitekturen i Docker bruger en klientservermodel og består af Docker's Client, Docker Host, Netværks- og Storage-komponenter og Docker Registry / Hub. Lad os se nærmere på hver af disse.
Docker's klient
Docker-brugere kan interagere med Docker gennem en klient. Når nogen docker-kommandoer kører, sender klienten dem til dockerd-dæmonen, som udfører dem. Docker API bruges af Docker-kommandoer. Det er muligt for Docker-klienten at kommunikere med mere end en dæmon.
Docker vært
Docker-værten giver et komplet miljø til at udføre og køre applikationer. Den består af Docker-dæmonen, billeder, containere, netværk og opbevaring. Som tidligere nævnt er dæmonen ansvarlig for alle containerrelaterede handlinger og modtager kommandoer via CLI ellerREST API. Det kan også kommunikere med andre dæmoner for at administrere sine tjenester.
Docker-objekter
1. Billeder
Billeder er intet andet end en skrivebeskyttet binær skabelon, der kan bygge containere. De indeholder også metadata, der beskriver containerens muligheder og behov. Billeder bruges til at gemme og sende applikationer. Et billede kan bruges alene til at bygge en container eller tilpasses til at tilføje yderligere elementer for at udvide den aktuelle konfiguration.
Du kan dele containerbillederne på tværs af teams inden for en virksomhed ved hjælp af et privat containerregister eller dele det med verden ved hjælp af et offentligt register som Docker Hub. Billeder er kerneelementet i Docker-oplevelsen, da de muliggør samarbejde mellem udviklere på en måde, der ikke var mulig før
2. Beholdere
Containere er slags indkapslede miljøer, hvor du kører applikationer. Container er defineret af billedet og eventuelle yderligere konfigurationsmuligheder, der gives ved start af containeren, inklusive og ikke begrænset til netværksforbindelser og lagerindstillinger. Beholdere har kun adgang til ressourcer, der er defineret i billedet, medmindre der er defineret yderligere adgang, når man bygger billedet i en container.
Du kan også oprette et nyt billede baseret på den aktuelle tilstand af en container. Da containere er meget mindre end virtuelle computere, kan de centrifugeres på få sekunder og resultere i meget bedre servertæthed
3. Netværk
Docker-netværk er en passage, gennem hvilken al den isolerede container kommunikerer. Der er hovedsageligt fem netværksdrivere i docker:
Bro : Det er standardnetværksdriveren til en container. Du bruger dette netværk, når din applikation kører på enkeltstående containere, dvs. flere containere, der kommunikerer med den samme docker-vært.
Vært : Denne driver fjerner netværksisolationen mellem dockercontainere og dockerhost. Du kan bruge den, når du ikke har brug for nogen netværksisolering mellem vært og container.
Overlay : Dette netværk gør det muligt for sværmtjenester at kommunikere med hinanden. Du bruger det, når du vil have containerne til at køre på forskellige Docker-værter, eller når du vil danne sværmetjenester af flere applikationer.
Ingen : Denne driver deaktiverer alt netværk.
macvlan : Denne driver tildeler mac-adresse til containere for at få dem til at ligne fysiske enheder. Det dirigerer trafikken mellem containere gennem deres mac-adresser. Du bruger dette netværk, når du f.eks. Vil have containerne til at ligne en fysisk enhed, mens du migrerer en VM-opsætning.
4. Opbevaring
Du kan gemme data inden for det skrivbare lag i en container, men det kræver en lagringsdriver. Da den ikke er vedvarende, går den fort, når containeren ikke kører. Desuden er det ikke let at overføre disse data. Med hensyn til vedvarende opbevaring tilbyder Docker fire muligheder:
Datavolumener : De giver mulighed for at oprette vedvarende opbevaring med muligheden for at omdøbe volumener, listevolumener og viser også den container, der er knyttet til diskenheden. Datavolumener placeres på værtsfilsystemet uden for containerens kopierings- og skrivemekanisme og er ret effektive.
Volumenbeholder : Det er en alternativ tilgang, hvor en dedikeret container er vært for et volumen og at montere dette volumen til andre containere. I dette tilfælde er volumenbeholderen uafhængig af applikationsbeholderen, og du kan derfor dele den på tværs af mere end en container.
Directory Mounts : En anden mulighed er at montere en værts lokale mappe i en container. I de tidligere nævnte tilfælde skal diskenhederne være inden for mappen Docker-diskenheder, hvorimod når det kommer til Directory Mounts, kan ethvert bibliotek på værtsmaskinen bruges som kilde til diskenheden.
Opbevarings-plugins : Storage Plugins giver mulighed for at oprette forbindelse til eksterne lagerplatforme. Disse plugins kortlagrer lagring fra værten til en ekstern kilde som et lagringsarray eller et apparat. Du kan se en liste over lagerplugins på Docker's Plugin-side.
hvordan man omdanner dobbelt til int
Docker's Registry
Docker-registre er tjenester, der giver placeringer, hvorfra du kan gemme og downloade billeder. Med andre ord indeholder en Docker-registreringsdatabase Docker-arkiver, der er vært for et eller flere Docker-billeder. Offentlige registre inkluderer to komponenter, nemlig Docker Hub og Docker Cloud. Du kan også bruge private registre. De mest almindelige kommandoer, når du arbejder med registre, inkluderer: docker push, docker pull, docker run
Nu hvor du har forstået Docker-arkitekturen, skal du tjekke dette af Edureka, et pålideligt online læringsfirma med et netværk på mere end 250.000 tilfredse elever spredt over hele kloden. Edureka DevOps-certificeringskursus hjælper eleverne med at forstå, hvad der er DevOps og få ekspertise i forskellige DevOps-processer og -værktøjer såsom Puppet, Jenkins, Nagios, Ansible, Chef, Saltstack og GIT til automatisering af flere trin i SDLC.
Har du et spørgsmål til os? Nævn det i kommentarfeltet i denne “Docker-arkitektur”, så vender vi tilbage til dig