Docker Architecture: Varför är det viktigt?



Den här bloggen diskuterar dockningsarkitekturen och dess olika komponenter. Det lyfter fram dockerfunktionerna som berättar orsaken till dess popularitet.

Många av oss tror att Docker är en integrerad del av . Så bakom detta otroliga verktyg måste det finnas en fantastisk arkitektur. I den här bloggen kommer jag att täcka allt du behöver veta om Docker-arkitekturen. Det här är de punkter som jag kommer att diskutera här:

  1. Traditionell virtualisering vs Docker
  2. Docker's Workflow
  3. Docker-arkitektur

Traditionell virtualisering mot Docker

Vad är en virtuell dator (virtuell maskin)?

En virtuell dator är en virtuell server som emulerar en hårdvaruserver. En virtuell maskin är beroende av systemets fysiska hårdvara för att efterlikna exakt samma miljö som du installerar dina applikationer i. Beroende på ditt användningsfall kan du använda en virtuell systemmaskin (som kör ett helt operativsystem som en process, så att du kan ersätta en riktig maskin mot en virtuell maskin) eller bearbeta virtuella maskiner som låter dig köra datorprogram ensam i det virtuella miljö.





Tidigare brukade vi skapa virtuella maskiner, och varje virtuell dator hade ett operativsystem som tog mycket utrymme och gjorde det tungt.

Vad är Docker?

Docker är ett open source-projekt som erbjuder en mjukvaruutvecklingslösning som kallas containrar. För att förstå Docker måste du veta vad containrar är. Enligt Hamnarbetare , en container är ett lätt, fristående, körbart paket med en mjukvara som innehåller allt som behövs för att köra den.



Behållare är plattformsoberoende och därmed kan Docker köras på både Windows- och Linux-baserade plattformar. I själva verket kan Docker också köras på en virtuell maskin om det uppstår ett behov av att göra det. Huvudsyftet med Docker är att det låter dig köra mikroserviceapplikationer i en distribuerad arkitektur.

Jämfört med virtuella maskiner flyttar Docker-plattformen upp abstraktion av resurser från hårdvarunivå till operativsystemnivå. Detta möjliggör förverkligandet av de olika fördelarna med behållare, t.ex. applikationsportabilitet, separering av infrastruktur och fristående mikrotjänster.

Med andra ord, medan virtuella maskiner abstraherar hela hårdvaruservern, behåller abstrakt operativkärnan. Detta är en helt annan metod för virtualisering och resulterar i mycket snabbare och lättare instanser.



vm vs docker - dockerarkitektur - edureka

sortera en lista c ++

Docker's Workflow

Låt oss först titta på Docker Engine och dess komponenter så att vi har en grundläggande uppfattning om hur systemet fungerar. Med Docker Engine kan du utveckla, montera, skicka och köra applikationer med följande komponenter:

  1. Docker Daemon : En ihållande bakgrundsprocess som hanterar Docker-bilder, behållare, nätverk och lagringsvolymer. Docker-demonen lyssnar ständigt på Docker API-förfrågningar och bearbetar dem.

  2. Docker Engine REST API : Ett API används av applikationer för att interagera med Docker-demonen. Det kan nås av en HTTP-klient.

  3. Docker CLI : En kommandoradsgränssnittsklient för interaktion med Docker-demonen. Det förenklar avsevärt hur du hanterar containerinstanser och är en av de viktigaste anledningarna till att utvecklare älskar att använda Docker.

Först pratar Docker-klienten med Docker-demonen, som utför tunga lyft av byggnaden, kör och distribuerar våra Docker-containrar. I grund och botten kan både Docker-klienten och demonen köras på samma system. Vi kan också ansluta en Docker-klient till enfjärr Docker-demon. Dessutom, genom att använda ett REST API, Docker-klienten och demonen, kommunicera, via UNIX-uttag eller ett nätverksgränssnitt.

Docker-arkitektur

Arkitekturen för Docker använder en klientservermodell och består av Docker's Client, Docker Host, Network and Storage-komponenter och Docker Registry / Hub. Låt oss titta på var och en av dessa i detalj.

Docker's Client

Docker-användare kan interagera med Docker via en klient. När någon docker-kommando körs skickar klienten dem till dockerd-demon, som utför dem. Docker API används av Docker-kommandon. Det är möjligt för Docker-klienten att kommunicera med mer än en daemon.

Docker-värd

Docker-värden tillhandahåller en komplett miljö för att köra och köra applikationer. Den består av Docker-demonen, bilder, behållare, nätverk och lagring. Som tidigare nämnts är daemon ansvarig för alla containerrelaterade åtgärder och tar emot kommandon via CLI ellerREST API. Det kan också kommunicera med andra demoner för att hantera sina tjänster.

hur man skapar en fil i java

Docker-objekt

1. Bilder

Bilder är inget annat än en skrivskyddad binär mall som kan bygga containrar. De innehåller också metadata som beskriver behållarens möjligheter och behov. Bilder används för att lagra och skicka applikationer. En bild kan användas på egen hand för att bygga en container eller anpassas för att lägga till ytterligare element för att utöka den nuvarande konfigurationen.

Du kan dela containerbilder över team inom ett företag med hjälp av ett privat containerregister eller dela dem med världen med hjälp av ett offentligt register som Docker Hub. Bilder är kärnan i Docker-upplevelsen eftersom de möjliggör samarbete mellan utvecklare på ett sätt som inte var möjligt tidigare

2. Behållare

Behållare är typ av inkapslade miljöer där du kör applikationer. Container definieras av bilden och eventuella ytterligare konfigurationsalternativ som tillhandahålls vid start av behållaren, inklusive och inte begränsat till nätverksanslutningar och lagringsalternativ. Behållare har endast tillgång till resurser som definieras i bilden, såvida inte ytterligare åtkomst definieras när bilden byggs in i en container.

Du kan också skapa en ny bild baserat på det aktuella tillståndet för en container. Eftersom behållare är mycket mindre än virtuella datorer kan de snurras på några sekunder och resultera i mycket bättre servertäthet

3. Nätverk

Docker-nätverk är en passage genom vilken all den isolerade behållaren kommunicerar. Det finns huvudsakligen fem nätverksdrivrutiner i docker:

    1. Bro : Det är standardnätverksdrivrutinen för en container. Du använder detta nätverk när din applikation körs på fristående behållare, dvs. flera behållare som kommunicerar med samma docker-värd.

    2. Värd : Den här drivrutinen tar bort nätverksisolationen mellan dockercontainrar och docker-värd. Du kan använda den när du inte behöver någon nätverksisolering mellan värd och container.

    3. Täcka över : Detta nätverk gör att svärmstjänster kan kommunicera med varandra. Du använder den när du vill att behållarna ska köras på olika Docker-värdar eller när du vill bilda svärmtjänster av flera applikationer.

    4. Ingen : Den här drivrutinen inaktiverar alla nätverk.

    5. macvlan : Den här drivrutinen tilldelar behållare en mac-adress så att de ser ut som fysiska enheter. Det dirigerar trafiken mellan behållare genom sina mac-adresser. Du använder det här nätverket när du vill att behållarna ska se ut som en fysisk enhet, till exempel när du migrerar en VM-installation.

4. Förvaring

Du kan lagra data inom det skrivbara lagret i en container men det kräver en lagringsdrivrutin. Eftersom den inte är beständig försvinner den när behållaren inte går. Dessutom är det inte lätt att överföra dessa uppgifter. När det gäller beständig lagring erbjuder Docker fyra alternativ:

    1. Datavolymer : De ger möjlighet att skapa bestående lagring, med möjlighet att byta namn på volymer, listvolymer och listar också behållaren som är associerad med volymen. Datavolymer placeras på värdfilsystemet utanför behållarens kopierings- och skrivmekanism och är ganska effektiva.

    2. Volymbehållare : Det är ett alternativt tillvägagångssätt där en dedikerad behållare är värd för en volym och att montera den volymen på andra behållare. I det här fallet är volymbehållaren oberoende av applikationsbehållaren och därför kan du dela den över mer än en behållare.

    3. Katalogfästen : Ett annat alternativ är att montera en värds lokala katalog i en container. I de tidigare nämnda fallen måste volymerna vara i mappen Docker-volymer, medan när det gäller katalogfästen kan vilken katalog som helst på värddatorn användas som en källa för volymen.

    4. Lagringsplugins : Storage Plugins ger möjlighet att ansluta till externa lagringsplattformar. Dessa plugins mappar lagring från värden till en extern källa som en lagringsmatris eller en apparat. Du kan se en lista med lagringsplugin på Docker's Plugin-sida.

Docker's Registry

java hur man använder detta

Dockerregister är tjänster som tillhandahåller platser där du kan lagra och ladda ner bilder. Med andra ord innehåller ett Docker-register Docker-arkiv som är värd för en eller flera Docker-bilder. Offentliga register innehåller två komponenter, nämligen Docker Hub och Docker Cloud. Du kan också använda privata register. De vanligaste kommandona när du arbetar med register inkluderar: docker push, docker pull, docker run

Nu när du har förstått Docker-arkitekturen, kolla in det här av Edureka, ett pålitligt inlärningsföretag online med ett nätverk av mer än 250 000 nöjda elever spridda över hela världen. Edureka DevOps Certification Training-kursen hjälper eleverna att förstå vad som är DevOps och få expertis inom olika DevOps-processer och verktyg som Puppet, Jenkins, Nagios, Ansible, Chef, Saltstack och GIT för att automatisera flera steg i SDLC.

Har du en fråga till oss? Vänligen nämna det i kommentarsektionen i denna “Docker-arkitektur” så återkommer vi till dig