Denne artikel blev offentliggjort som en del af Data Science Blogathon
Introduktion
Det er ikke svært at skabe en maskinlæringsmodel, der fungerer på vores computere. Det er sværere, når du arbejder med en kunde, der ønsker at bruge modellen i skala, altså en model, der kan skalere og performe på alle typer servere over hele verden. Når du er færdig med at designe din model, fungerer den muligvis problemfrit på din bærbare computer eller server, men ikke så godt på andre platforme, som når du flytter den til produktionsstadiet eller en anden server. Mange ting kan gå galt, såsom ydeevneproblemer, applikationen, der går ned, eller applikationen ikke er effektivt optimeret.
En maskinlæringsmodel var udviklet ved hjælp af et enkelt programmeringssprog som f Python men vil næsten helt sikkert være nødt til at forbinde med flere programmeringssprog til dataindtag, dataforberedelse, front-end osv. Docker gør det nemmere at håndtere alle disse interaktioner, fordi hver mikrotjeneste kan bygges i et særskilt sprog, hvilket giver mulighed for skalerbarhed og den hurtige tilføjelse, sletning af uafhængige tjenester. Reproducerbarhed, bærbarhed, nem implementering, granulære opdateringer, letvægt og enkelhed er alle fordelene ved Docker.
Nogle gange er det ikke modellen, der er problemet, men kravet om at genskabe hele stakken. Docker giver dig mulighed for nemt at replikere trænings- og løbemiljøet for machine learning-modellen fra ethvert sted. Docker giver dig mulighed for at pakke din kode og afhængigheder i containere, der kan overføres til forskellige værter, uanset hardware eller operativsystem.
Udviklere kan bruge Docker til at holde styr på forskellige versioner af et containerbillede, se hvem der har produceret det med hvad og rulle tilbage til tidligere versioner. Endelig, selvom en af dine maskinlæringsapplikationstjenester er ved at opgradere, rette eller nede, kan din maskinlæringsapplikation fortsætte med at køre. For at opdatere en outputmeddelelse integreret i hele applikationen, behøver du ikke at opdatere hele applikationen og forstyrre andre tjenester.
Lad os grave ind og begynde at undersøge Docker.
Hvad er Docker!
Det er en softwareplatform, der gør det lettere at udvikle, udføre, administrere og distribuere applikationer. Det var opnået ved at virtualisere operativsystemet på den computer, den havde installeret.
Dockers første udgave var lanceret i 2013.
GO-programmeringssproget havde brugt til at skabe Docker.
Ser man på det rige sæt af funktionalitet, Docker har at tilbyde, er det blevet bredt accepteret af nogle af verdens førende organisationer og universiteter, som f.eks. Visa, PayPal, Cornell University og Indiana University (bare for at nævne nogle få) til at køre og administrere deres applikationer ved hjælp af Docker.
Nu prøver vi at forstå problemet og løsningen, der tilbydes af Docker
Problem
Lad os forestille os, at du vil være vært for tre separate Python-baserede applikationer på en enkelt server (som enten kan være en fysisk eller en virtuel maskine). En anden version af Python, der bruges af disse programmer, biblioteker og afhængigheder, varierer fra applikation til applikation.
Vi er ikke i stand til at hoste alle tre applikationer på den samme arbejdsstation, da forskellige versioner af Python ikke kan installeres på den samme maskine,
Løsning
Lad os se, hvad vi kunne gøre, hvis vi ikke brugte Docker til at løse dette problem. I dette tilfælde kan vi løse problemet ved hjælp af tre fysiske maskiner eller ved at bruge en enkelt fysisk computer, der er kraftig nok til at hoste og køre tre virtuelle maskiner.
Begge tilgange ville hjælpe os med at installere forskellige versioner af Python og deres tilknyttede afhængigheder på hver af disse maskiner.
Uanset hvilken løsning vi har valgt, er omkostningerne ved indkøb og vedligeholdelse af hardwaren betydelige.
Lad os se på, hvordan Docker kan være en levedygtig og omkostningseffektiv løsning på dette problem.
For at forstå dette skal vi først undersøge dets funktionalitet.
Billede 2
Enkelt sagt kaldes systemet med Docker installeret og kører som en Docker Host eller Host.
Som et resultat, når du ønsker at implementere en applikation på værten, vil den bygge en logisk enhed til at være vært for den applikation. Dette logiske objekt er kendt som en Container eller en Docker Container i Docker-nomenklaturen.
Der er intet operativsystem installeret eller kører på en Docker Container. En virtuel replika af procestabellen, netværksgrænsefladen(-erne) og filsystemets monteringspunkt vil dog være inkluderet.
Det sendes videre fra værtsoperativsystemet, hvorpå containeren er hostet og eksekveret. Kernen i værtens operativsystem deles på den anden side af alle de containere, der kører på den.
Det gør det muligt at isolere hver beholder på den samme vært fra de andre. Som et resultat hjælper det adskillige containere med forskellige applikationskrav og afhængigheder med at køre på den samme vært, så længe operativsystemkravene er de samme.
Den næste del, som omhandler fordele og ulemper ved at adoptere Docker, hjælper dig med at forstå, hvordan Docker hjælper med at løse denne udfordring.
Med andre ord, i stedet for at virtualisere hardwarekomponenter, ville Docker virtualisere operativsystemet på den vært, som den havde installeret og kørt på.
Fordele og ulemper ved at bruge Docker
FORDELE
- Docker tillader adskillige programmer med forskellige krav og afhængigheder at blive hostet på den samme vært, så længe de bruger det samme operativsystem.
- Containere er typisk et par megabyte store og optager relativt lidt diskplads, hvilket tillader mange applikationer hostet på den samme vært.
- Robusthed, Der er intet operativsystem installeret på en container. Som et resultat bruger den ekstremt lidt hukommelse sammenlignet med en virtuel maskine (som ville have et komplet operativsystem installeret og kørende på den). Det reducerer opstartstiden til kun et par sekunder, mens det tager flere minutter at starte en virtuel maskine.
- Omkostningerne er mindre, når det kommer til den nødvendige hardware for at køre Docker, og den er mindre krævende.
ULEMPER
- På den samme Docker Host kan vi ikke hoste applikationer sammen, der har forskellige operativsystembehov. Lad os foregive, at vi har fire separate programmer, hvoraf tre kræver et Linux-baseret operativsystem og et af dem kræver et Windows-baseret operativsystem. De tre apps, der kræver et Linux-baseret OS, kan være på en enkelt Docker Host. Den applikation, der kræver et Windows-baseret OS, skal være på en separat Docker Host.
Docker-kernekomponenter
Docker Engine er en af kernekomponenterne og er ansvarlig for den overordnede funktion.
Det er en klient-server baseret applikation med tre hovedkomponenter.
- Server
- Rest API
- Klient
Server udfører dockerd (Docker Daemon) dæmonen, som ikke er mere end en proces. På Docker-platformen er den ansvarlig for at skabe og administrere Docker-billeder, -beholdere, -netværk og -volumener.
REST-API definerer, hvordan applikationer kan kommunikere med serveren og fortælle den, hvordan de skal udføre deres opgaver.
Klient er en kommandolinjegrænseflade, der giver brugerne mulighed for at kommunikere med Docker ved at udstede kommandoer.
Docker-terminologier
Lad os tage et kig på nogle af de termer, der bruges i Docker-verdenen.
Docker billeder , Dockerbeholdere er de to vigtigste elementer, du vil støde på, mens du arbejder med Docker regelmæssigt.
Enkelt sagt er et Docker-billede en skabelon, der inkluderer programmet, afhængigheder, der er nødvendige for at køre det på Docker.
En Docker Container er på den anden side en logisk enhed, som tidligere angivet. Det er en fungerende forekomst af Docker-billedet i mere tekniske termer.
Docker-hub
Docker-hub er det officielle online-lager, hvor vi kan finde alle de Docker-billeder, som vi kan bruge.
Hvis vi vil, kan vi også bruge Docker Hub til at gemme og distribuere vores brugerdefinerede billeder. Vi kunne også gøre dem offentlige eller private, afhængigt af vores behov.
Bemærk: Gratis brugere kan holde ét Docker-billede privat. Mere end et kræver et betalt abonnement.
Installation
Inden vi får snavsede hænder med Docker, er en sidste ting, vi skal vide, at vi skal have den installeret.
De officielle Docker CE installationsvejledninger er linket nedenfor. Disse instruktioner til installation af Docker på din pc er ligetil.
Ønsker du at springe installationen over og begynde at øve Docker?
Hvis du er for langsom til at installere Docker eller ikke har nok ressourcer på din pc, skal du ikke gå i panik – der er en løsning på dit problem.
Leg med Docker, en online legeplads for Docker, er det bedste sted at starte. Det giver brugerne mulighed for straks at øve Docker-kommandoer uden at skulle installere noget på deres pc. Det bedste er, at det er nemt at bruge og helt gratis.
Docker-kommandoer
Det er endelig tid til at få hænderne snavsede med Docker-kommandoer, som vi alle har ventet på
docker skabe
Docker create-kommandoen vil være den første kommando, vi vil se på
Vi kan bruge denne kommando til at bygge en ny container.
Følgende er syntaksen for denne kommando:
docker create [options] IMAGE [commands] [arguments]
Husk, at alt i firkantede parenteser er valgfrit. Det gælder for alle instruktionerne i denne vejledning.
Følgende er nogle eksempler på, hvordan du bruger denne kommando:
$ docker create fedora
02576e880a2ccbb4ce5c51032ea3b3bb8316e5b626861fc87d28627c810af03
Docker create-kommandoen i det foregående eksempel ville skabe en ny container ved hjælp af det seneste Fedora-billede.
Det vil verificere, om det seneste officielle Fedora-billede er tilgængeligt på Docker-værten, før containeren bygges. Hvis det seneste billede ikke er tilgængeligt på Docker-værten, var containeren startet ved at bruge Fedora-billedet downloadet fra Docker Hub. Hvis Fedora-billedet allerede er til stede på Docker-værten, bruger containeren dette billede til oprettelse.
Docker resulterer i container-id'et ved vellykket oprettelse af containeren. Container-id'et returneret af Docker er i ovenstående eksempel.
Der var tildelt et container-id til hver container. Når vi udfører forskellige aktiviteter på containeren, såsom start, stop, genoptagelse og så videre, henviser vi til den ved dens container-id.
Lad os se på et andet eksempel på docker create-kommandoen, denne gang med parametre og kommando leveret til den.
$ docker create -t -i ubuntu bash
30986b73dc0022dbba81648d9e35e6e866b4356f026e75660460c3474f1ca005
Docker create-kommandoen i det foregående eksempel bygger en container ved hjælp af Ubuntu-billedet (hvis billedet ikke er tilgængeligt på Docker Host, vil det downloade det seneste billede fra Docker Hub, før containeren bygges).
Indstillingerne -t og -i fortæller Docker at tildele en terminal til containeren, så brugeren kan interagere med den. Det fortæller også Docker at køre bash-kommandoen hver gang containeren starter.
docker ps
Docker ps-kommandoen er den næste, vi skal se på
Vi kan bruge docker ps kommando for at se alle de containere, der i øjeblikket udføres på Docker Host.
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES30986b73dc00 ubuntu "bash" 45 minutes ago Up About a minute elated_franklin
Det viser kun de containere, der kører på Docker Host lige nu.
For at se de containere, der er oprettet på denne Docker-vært, uanset deres nuværende tilstand, om den kører eller ej, skal du bruge -a-indstillingen, som viser alle containere, der er oprettet på denne Docker-vært.
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES30986b73dc00 ubuntu “bash” About an hour ago Up 29 minutes elated_franklin02576e880a2c fedora “/bin/bash” About an hour ago Created hungry_sinoussi
Lad os forstå ovenstående output fra docker ps-kommandoen.
CONTAINER ID: består af en unik streng med alfanumeriske tegn forbundet med hver beholder.
BILLEDE: Docker Image bruges til at oprette containeren.
KOMMANDO: Efter starten af containeren kører den alle applikationsspecifikke kommandoer.
OPRETTET: Det giver den forløbne tid siden oprettelsen af beholderen.
STATUS: Det giver den aktuelle status for containeren.
Hvis beholderen kører, vil den vise Op sammen med forløbet tid. (Op omkring en time eller op 5 minutter)
Hvis containeren ikke kører, vil status være Afsluttet, med udgangsstatuskoden anført i runde parenteser, og tiden er udløbet. (Forladt (0) for 2 uger siden eller afsluttet (137) for 10 sekunder siden,)
HAVNE: Det giver havnekortlægninger beskrevet for containeren.
NAVNE: Ud over CONTAINER ID'et havde hver container givet et unikt navn. En container kan identificeres ved sit container-id eller ved sit unikke navn. Hver container Docker genererer og tildeler som standard et unikt navn. Hvis du ønsker at ændre containeren til et unikt navn, skal du bruge -name-indstillingen med docker-kommandoerne create eller docker run.
Jeg håber, at dette hjælper dig med bedre at forstå, hvad docker ps-kommandoen returnerer.
docker start
Kommandoen hjælper med at starte eventuelle stoppede containere.
docker start [options] CONTAINER ID/NAME [CONTAINER ID/NAME…]
For at starte containeren kan du angive de første unikke tegn i container-id'et eller dets navn.
Nedenfor kan du se på eksemplet.
$ docker start 30986
$ docker start elated_franklin
docker genstart
Kommandoen hjælper med at genstarte alle kørende containere.
docker restart [options] CONTAINER ID/NAME [CONTAINER ID/NAME…]
På samme måde kan vi genstarte ved at angive de første unikke tegn i container-id'et eller dets navn.
Se på eksemplerne ved hjælp af denne kommando
$ docker restart 30986
$ docker restart elated_franklin
havnearbejder stop
Kommandoen hjælper med at stoppe alle kørende containere.
docker stop [options] CONTAINER ID/NAME [CONTAINER ID/NAME…]
Det er relateret til startkommandoen.
Du kan angive de første unikke tegn i container-id'et eller dets navn for at stoppe containeren.
Tag et kig på nedenstående eksempler
$ docker stop 30986
$ docker stop elated_franklin
docker løb
Den opretter først beholderen og starter den derefter. Sammenfattende er det en kombination af docker-kommandoerne til at oprette og starte.
Det har en lignende syntaks til docker create.
docker run [options] IMAGE [commands] [arguments]
$ docker køre ubuntu
30fa018c72682d78cf168626b5e6138bb3b3ae23015c5ec4bbcc2a088e67520
I ovenstående eksempel opretter den en container ved hjælp af det seneste Ubuntu-billede og starter containeren og stopper den straks. Vi kan ikke få en chance for at interagere med det.
For at interagere med containeren skal vi specificere mulighederne -it til docker run-kommandoen, så kan vi interagere med containeren.
$ docker run -it ubuntu
[email protected]:/#
Skriv exit i terminalen for at komme ud af containeren.
havnearbejder rm
Vi bruger denne kommando til at slette en container.
docker rm [options] CONTAINER ID/NAME [CONTAINER ID/NAME...]
$ docker rm 30fa elated_franklin
I ovenstående eksempel instruerer vi docker om at slette to containere i en enkelt kommando. Vi angiver id'et for den første og navnet på den anden beholder til sletning.
Beholderen skal være i standset tilstand for at slette den.
docker billeder
Kommandoen viser alle docker-billeder, der findes på docker-værten.
$ docker images
REPOSITORY TAG IMAGE CREATED SIZEmysql latest 7bb2586065cd 38 hours ago 477MBhttpd latest 5eace252f2f2 38 hours ago 132MBubuntu 16.04 9361ce633ff1 2 weeks ago 118MBubuntu trusty 390582d83ead 2 weeks ago 188MBfedora latest d09302f77cfc 2 weeks ago 275MBubuntu latest 94e814e2efa8 2 weeks ago 88.9MB
LAGER: Det beskriver det unikke navn på docker-billedet.
TAG: Hvert billede er forbundet med et unikt tag, der repræsenterer en version af billedet.
Et mærke var repræsenteret ved hjælp af et ord eller sæt tal eller alfanumeriske tegn.
BILLEDE: Det er en streng af alfanumeriske tegn knyttet til hvert billede.
OPRETTET: Det giver forløbet tid siden billedet blev oprettet.
STØRRELSE: Det giver billedets størrelse.
dockerrmi
Denne kommando giver os mulighed for at fjerne billeder fra docker-værten.
docker rmi [options] IMAGE NAME/ID [IMAGE NAME/ID...]
docker rmi mysql
Kommandoen fjerner image mysql fra docker-værten.
Nedenstående kommando fjerner billeder httpd og fedora fra docker-værten.
docker rmi httpd fedora
Kommandoen nedenfor fjerner billedet med ID 94e81 fra docker-værten.
docker rmi 94e81
Nedenstående kommando fjerner billede ubuntu med tag trofast.
docker rmi ubuntu:trusty
Dette er nogle af de grundlæggende kommandoer, du støder på. Der er mange andre instruktioner at udforske.
Afvikle
Selvom containerisering har eksisteret i lang tid, har den først for nylig fået den opmærksomhed, den fortjener. Google, Amazon Web Services (AWS), Intel, Tesla er blot nogle få førende teknologivirksomheder med deres specialiserede containermotorer. De er meget afhængige af dem til at udvikle, køre, administrere og distribuere deres software.
Docker er en ekstremt kraftfuld containeriseringsmotor, og den har meget at tilbyde, når det kommer til at bygge, køre, administrere og distribuere dine applikationer effektivt.
Du havde set docker på et højt niveau. Der er meget at studere om docker, f.eks
- Kommandoer (mere kraftfulde kommandoer)
- Docker-billeder er en type container (byg dine brugerdefinerede billeder)
- Netværk med Docker (Opsæt og konfigurer netværk)
- Stack of Docker (grupperingstjenester, der kræves af en applikation)
- Docker Compose er et værktøj, der giver dig mulighed for at oprette en container (værktøj til at administrere og køre flere containere)
- Swarm of Dockers (gruppering og styring af en eller flere maskiner, som docker kører på)
Hvis du har fundet dette fascinerende og ønsker at lære mere om det, anbefaler jeg, at du tilmelder dig et af kurserne nedenfor. De var pædagogiske og lige til sagen, efter min mening.
Hvis du er helt nybegynder, anbefaler jeg tilmelding i dette kursus, som er udarbejdet specifikt til dig.
Hvis du har noget Docker-erfaring og er fortrolig med det grundlæggende, men ønsker at lære mere, anbefaler jeg tilmelding i dette kursus, som fokuserer på avancerede Docker-fag. Det er en fremtidssikret færdighed, som først nu vinder indpas.
At investere din tid og penge i at studere Docker er ikke noget, du vil fortryde.
Slut noter
Jeg håber, du finder denne artikel nyttig. Du er velkommen til at dele den. Tak, hav en god dag.
Billede Kilde:
- Billede 1: https://hub.docker.com/
- Billede 2: www.docker.com
- Billede 3: https://docs.docker.com/v17.12/engine/docker-overview/
Kilde: https://www.analyticsvidhya.com/blog/2021/10/a-complete-guide-on-docker-for-beginners/
- 11
- 9
- aktiviteter
- Alle
- tillade
- Amazon
- Amazon Web Services
- Amazon Web Services (AWS)
- analytics
- Anvendelse
- applikationer
- apps
- argumenter
- omkring
- artikel
- AWS
- BEDSTE
- bygge
- Bygning
- virksomheder
- udfordre
- lave om
- afgift
- kode
- computere
- Container
- Beholdere
- fortsæt
- Omkostninger
- Oprettelse af
- Nuværende
- data
- dag
- udvikle
- Afbryde
- Docker
- Docker container
- uddannelsesmæssige
- Miljø
- etc.
- Udgang
- erfaring
- Endelig
- Fornavn
- Gratis
- funktion
- Fundamentals
- stor
- vejlede
- Hardware
- Høj
- Hvordan
- How To
- HTTPS
- billede
- Indiana
- Intel
- spørgsmål
- IT
- Nøgle
- Sprog
- Sprog
- laptop
- seneste
- førende
- LÆR
- læring
- Niveau
- Lister
- placering
- logo
- Lang
- machine learning
- Maskiner
- Medier
- model
- penge
- bevæge sig
- netværk
- netværk
- net
- numre
- tilbyde
- officiel
- online
- drift
- operativsystem
- Udtalelse
- Option
- Indstillinger
- organisationer
- Andet
- Andre
- Panic
- PayPal
- PC
- ydeevne
- fysisk
- perron
- Platforme
- porte
- præsentere
- private
- produceret
- produktion
- Program
- Programmering
- programmeringssprog
- Programmer
- offentlige
- Python
- Krav
- Ressourcer
- Resultater
- afkast
- Roll
- Kør
- kører
- Skalerbarhed
- Scale
- Videnskab
- Tjenester
- sæt
- Del
- delt
- Simpelt
- Størrelse
- So
- Software
- softwareplatform
- SOLVE
- Space
- firkant
- Stage
- starte
- Tilstand
- Status
- butik
- Studere
- abonnement
- vellykket
- systemet
- tech
- Teknisk
- fortæller
- Tesla
- verdenen
- tid
- spor
- Kurser
- Ubuntu
- Universiteter
- universitet
- Opdatering
- opdateringer
- us
- brugere
- Specifikation
- Virtual
- virtuel maskine
- web
- webservices
- WHO
- ord
- world