Hvad er Docker?
Før vi starter vores hurtige rundvisning i Docker-objektbeholdere, kan vi se på, hvordan vores team udvikler og udruller programmer. Vi beskriver også kort nogle af de udfordringer, vores teams står overfor.
Processen med at udvikle og administrere programmer i din virksomhed omfatter typisk et eller flere teams. Der er et udviklingsteam, der opretter softwaren og et driftsteam, der er ansvarlig for at udrulle disse programmer. Driftsteamet er også ansvarlig for administration af infrastrukturen til programhosting.
Antag f.eks., at vi udvikler en ordresporingsportal, som vores virksomheds forskellige afsætningsmuligheder kan bruge. Flere miljøer hoster vores programmer under appens udviklings- og udgivelsesproces. For det første udvikler og tester udviklingsteamet softwaren i et udviklingsmiljø. Herfra udrulles softwaren til et kvalitetssikringsmiljø efterfulgt af præproduktion og et endeligt produktionsmiljø.
Der er flere udfordringer, som vi skal overveje i det foregående scenarie:
Administration af værtsmiljøer
De forskellige miljøer kræver både software- og hardwareadministration. Vi er nødt til at sikre, at både den installerede software og den konfigurerede hardware i hver er den samme. Vi skal også konfigurere aspekter som netværksadgang, datalager og sikkerhed pr. miljø på en ensartet og let reproducerbar måde.
Kontinuitet i levering af software
Installation af programmer i vores miljøer skal ske på en ensartet måde. Hver udrulningspakke skal indeholde alle systempakker, binære filer, biblioteker, konfigurationsfiler og andre elementer, der sikrer et fuldt funktionsdygtigt program. Vi skal også sikre os, at alle disse afhængigheder stemmer overens med softwareversioner og arkitektur.
Effektiv brug af hardware
Hvert udrullede program skal udføres på en sådan måde, at det er isoleret fra andre programmer, der kører på den samme hardware. Vi tilstræber at køre mere end ét program pr. server for at udnytte ressourcerne bedst muligt uden at gå på kompromis med hinanden.
overførsel af programmer
Der er flere grunde til, at overførsel af programmer er afgørende. Et værtsmiljø kan mislykkes, eller vi skal muligvis skalere vores program ud. I begge tilfælde er det potentielle resultat at geninstallere vores software til et nyt miljø. Vi ønsker at flytte software fra én vært til en anden, selvom den underliggende infrastruktur er anderledes. Et sådant træk skal ske så hurtigt som muligt for at reducere nedetiden for vores kunder.
Før vi ser på Docker-funktionerne, der hjælper med at løse disse udfordringer, drøfter vi et par begreber og ser på en kort oversigt over Docker-arkitekturen.
Hvad er en objektbeholder?
En objektbeholder er et løst isoleret miljø, der giver os mulighed for at bygge og køre softwarepakker. Disse softwarepakker omfatter koden og alle afhængigheder til at køre programmer hurtigt og pålideligt på ethvert computermiljø. Vi kalder disse pakker objektbeholderbilleder.
Objektbeholderbilledet bliver den enhed, vi bruger til at distribuere vores programmer.
Hvad er softwareobjektbeholderisering?
Softwareobjektbeholderisering er en OS-virtualiseringsmetode, der bruges til at installere og køre objektbeholdere uden brug af en virtuel maskine (VM). Objektbeholdere kan køre på fysisk hardware, i cloudmiljøet, på VM'er og på tværs af flere operativsystemer.
Hvad er Docker?
Docker er en objektbeholderplatform, der bruges til at udvikle, sende og køre objektbeholdere. Docker bruger ikke en hypervisor, og du kan køre Docker på din stationære eller bærbare computer, hvis du udvikler og tester programmer. Desktopversionen af Docker understøtter Linux, Windows og macOS. Docker er tilgængelig til produktionssystemer til servermiljøer, herunder mange varianter af Linux og Microsoft Windows Server 2016 og nyere. Mange cloudmiljøer, herunder Azure, understøtter Docker.
Docker-arkitektur
Docker-platformen består af flere komponenter, som vi bruger til at bygge, køre og administrere vores objektbeholderprogrammer.
Docker-program
Docker-programmet består af flere komponenter, der er konfigureret som en klient-server-implementering, hvor klienten og serveren kører samtidigt på den samme vært. Klienten kommunikerer med serveren ved hjælp af en REST-API, som gør det muligt for klienten også at kommunikere med en ekstern serverforekomst.
Nogle pile viser kommunikationen mellem Docker Server, der kører Objektbeholdere og gemte objektbeholderbilleder. Disse pile angiver, hvordan Docker-serveren indlæser gemte objektbeholderafbildninger og administrerer kørende objektbeholdere.
Docker-klienten
Der er to alternativer til Docker-klienten: Et kommandolinjeprogram med navnet docker
eller et grafisk brugergrænsefladebaseret program kaldet Docker Desktop. Både kommandolinjegrænsefladen og Docker Desktop interagerer med en Docker-server. De docker
kommandoer fra kommandolinjegrænsefladen eller Docker Desktop bruger Docker REST API'en til at sende instruktioner til enten en lokal server eller fjernserver og fungerer som den primære grænseflade, vi bruger til at administrere vores objektbeholdere.
Docker-serveren
Docker-serveren er en daemon med navnet dockerd
. Den dockerd
daemon besvarer klientanmodninger via Docker REST API og kan interagere med andre daemoner. Docker-serveren er også ansvarlig for at spore livscyklussen for vores objektbeholdere.
Docker-objekter
Der er flere objekter, som du skal oprette og konfigurere til at understøtte dine objektbeholderinstallationer. Disse omfatter netværk, lagermængder, plug-ins og andre tjenesteobjekter. Vi dækker ikke alle disse objekter her, men det er godt at huske på, at disse objekter er elementer, som vi kan oprette og udrulle efter behov.
Docker Hub
Docker Hub er en SaaS-objektbeholderregistreringsdatabase (Software as a Service). Docker-registre er lagre, som vi bruger til at gemme og distribuere de objektbeholderbilleder, vi opretter. Docker Hub er den offentlige standardregistreringsdatabase, som Docker bruger til billedstyring.
Vær opmærksom på, at du kan oprette og bruge en privat Docker-registreringsdatabase eller bruge en af de mange tilgængelige cloududbyderindstillinger. Du kan f.eks. bruge Azure Container Registry til at gemme objektbeholderbilleder, der skal bruges i flere Azure-objektbeholderaktiverede tjenester.