Lad os blive fortrolige med Docker-arkitekturen og dens væsentlige komponenter.
Jeg antager, at du har en grundlæggende forståelse af Docker. Hvis ikke, kan du henvise til denne tidligere artikel.
Jeg tror, du forstår Docker-betydningen i DevOps. Nu bag dette fantastiske værktøj skal der være en fantastisk, gennemtænkt arkitektur. Er det ikke?
Men før jeg taler om det, lad mig fremvise de tidligere og nuværende virtualiseringssystemer.
Indholdsfortegnelse
Traditionel vs. ny generations virtualisering
Tidligere plejede vi at skabe virtuelle maskiner, og hver VM havde et OS, som tog meget plads og gjorde det tungt.
Nu i docker-containers tilfælde har du et enkelt OS, og ressourcerne deles mellem containerne. Derfor er den let og støvler på få sekunder.
Docker-arkitektur
Nedenfor er det enkle diagram af en Docker-arkitektur.
Lad mig forklare dig komponenterne i en docker-arkitektur.
Docker Engine
Det er kernedelen af hele Docker-systemet. Docker Engine er en applikation, der følger klient-server-arkitektur. Det er installeret på værtsmaskinen. Der er tre komponenter i Docker Engine:
- Server: Det er docker-dæmonen kaldet dockerd. Det kan oprette og administrere docker-billeder. Containere, netværk mv.
- Rest API: Den bruges til at instruere docker-dæmonen, hvad den skal gøre.
- Command Line Interface (CLI): Det er en klient, der bruges til at indtaste docker-kommandoer.
Docker-klient
Docker-brugere kan interagere med Docker gennem en klient. Når nogen docker-kommandoer kører, sender klienten dem til dockerd daemon, som udfører dem. Docker API bruges af Docker-kommandoer. Docker-klient kan kommunikere med mere end én dæmon.
Docker registre
Det er stedet, hvor Docker-billederne er gemt. Det kan være et offentligt docker-register eller et privat docker-register. Docker Hub er standardstedet for docker-billeder, dets butikkers offentlige register. Du kan også oprette og køre dit eget private register.
Når du udfører docker pull- eller docker run-kommandoer, hentes det påkrævede docker-image fra den konfigurerede registreringsdatabasen. Når du udfører docker push-kommando, gemmes docker-billedet i den konfigurerede registreringsdatabasen.
Docker-objekter
Når du arbejder med Docker, bruger du billeder, containere, volumener, netværk; alle disse er Docker-objekter.
Billeder
Docker-billeder er skrivebeskyttede skabeloner med instruktioner til at oprette en docker-container. Docker-billede kan trækkes fra en Docker-hub og bruges som det er, eller du kan tilføje yderligere instruktioner til basisbilledet og oprette et nyt og ændret docker-billede. Du kan også oprette dine egne docker-billeder ved hjælp af en dockerfil. Opret en dockerfil med alle instruktionerne til at oprette en container og køre den; det vil oprette dit brugerdefinerede docker-billede.
Docker-billede har et basislag, som er skrivebeskyttet, og det øverste lag kan skrives. Når du redigerer en dockerfil og genopbygger den, er det kun den ændrede del, der genopbygges i det øverste lag.
Containere
Når du har kørt et docker-image, opretter det en docker-container. Alle applikationer og deres miljø kører inde i denne beholder. Du kan bruge Docker API eller CLI til at starte, stoppe, slette en docker-container.
Nedenfor er en eksempelkommando til at køre en ubuntu docker-container:
docker run -i -t ubuntu /bin/bash
Bind
De vedvarende data, der genereres af docker og bruges af Docker-containere, gemmes i Volumes. De administreres fuldstændigt af docker gennem docker CLI eller Docker API. Volumener fungerer på både Windows- og Linux-containere. I stedet for at fastholde data i en containers skrivbare lag, er det altid en god mulighed at bruge volumener til det. Volumenets indhold eksisterer uden for en beholders livscyklus, så brug af volumen øger ikke størrelsen på en beholder.
Du kan bruge -v eller -mount flag til at starte en container med et volumen. I denne eksempelkommando bruger du geekvolume volumen med toadmin.dk container.
docker run -d --name toadmin.dk -v geekvolume:/app nginx:latest
Netværk
Docker-netværk er en passage, hvorigennem alle de isolerede containere kommunikerer. Der er hovedsageligt fem netværksdrivere i docker:
Konklusion
Jeg håber, at dette giver dig en idé om Docker-arkitektur og dens væsentlige komponenter. Naviger rundt i Docker for at lære mere, og hvis du er interesseret i at få praktisk træning, så tjek dette Docker Mastery kursus.
Nydt at læse artiklen? Hvad med at dele med verden?