Docker forenklet: En hands-on guide til absolutte begyndere

Billedkilde: Wikimedia

Uanset om du planlægger at starte din karriere i DevOps, eller du allerede er i den, hvis du ikke har Docker angivet på dit CV, er det utvivlsomt tid for dig at tænke over det, da Docker er en af ​​de kritiske færdigheder for alle, der er på DevOps arena.

I dette indlæg vil jeg gøre mit bedste for at forklare Docker på den enkleste måde jeg kan.

Før vi tager et dybt dykk og begynder at udforske Docker, lad os se på hvilke emner, vi vil dække som en del af denne begyndervejledning.

  • Hvad er Docker?
  • Problemet Docker løser
  • Fordele og ulemper ved at bruge Docker
  • Kerneelementer i Docker
  • Docker-terminologi
  • Hvad er Docker Hub?
  • Docker-udgaver
  • Installation af Docker
  • Nogle vigtige Docker-kommandoer for at komme i gang
  • Wrap-Up

Lad os begynde med at forstå, hvad er Docker?

Enkelt sagt er Docker en softwareplatform, der forenkler processen med at bygge, køre, styre og distribuere applikationer. Det gør dette ved at virtualisere operativsystemet på den computer, den er installeret på og kører på.

Den første udgave af Docker blev udgivet i 2013.

Docker er udviklet ved hjælp af GO-programmeringssprog.

Ser man på det rige sæt funktionalitet, som Docker har at byde på, er det blevet bredt accepteret af nogle af verdens førende organisationer og universiteter, såsom Visa, PayPal, Cornell University og Indiana University (for blot at nævne nogle få) til at køre og styre deres applikationer, der bruger Docker.

Lad os nu prøve at forstå problemet, og den løsning, Docker har at tilbyde

Problemet

Lad os sige, at du har tre forskellige Python-baserede applikationer, som du planlægger at være vært på en enkelt server (som enten kan være en fysisk eller en virtuel maskine).

Hver af disse applikationer bruger en anden version af Python, såvel som de tilknyttede biblioteker og afhængigheder, adskiller sig fra et program til et andet.

Da vi ikke kan have forskellige versioner af Python installeret på den samme maskine, forhindrer dette os i at være vært for alle tre applikationer på den samme computer.

Løsningen

Lad os se på, hvordan vi kunne løse dette problem uden at bruge Docker. I et sådant scenario kunne vi løse dette problem enten ved at have tre fysiske maskiner eller en enkelt fysisk maskine, som er kraftig nok til at være vært for og køre tre virtuelle maskiner på det.

Begge mulighederne giver os mulighed for at installere forskellige versioner af Python på hver af disse maskiner sammen med deres tilknyttede afhængigheder.

Uanset hvilken løsning vi vælger, er omkostningerne ved anskaffelse og vedligeholdelse af hardware ganske dyre.

Lad os nu tjekke, hvordan Docker kunne være en effektiv og omkostningseffektiv løsning på dette problem.

For at forstå dette er vi nødt til at tage et kig på, hvordan nøjagtigt Docker fungerer.

Maskinen, hvorpå Docker er installeret og kører, kaldes normalt en Docker-vært eller -hest på enkle vilkår.

Så når du planlægger at distribuere en applikation på værten, ville den oprette en logisk enhed på den til at være vært for den applikation. I Docker-terminologi kalder vi denne logiske enhed en Container eller Docker Container for at være mere præcis.

En Docker Container har ikke noget operativsystem installeret og kører på det. Men det ville have en virtuel kopi af processtabellen, netværksgrænsefladen (e) og filsystemets monteringspunkt (er). Disse er arvet fra operativsystemet for den vært, som containeren er vært på og kører.

Mens kernen i værtens operativsystem deles på tværs af alle containere, der kører på den.

Dette tillader, at hver beholder isoleres fra den anden, der er til stede på den samme vært. Det understøtter således flere containere med forskellige applikationskrav og afhængigheder til at køre på den samme vært, så længe de har de samme operativsystemkrav.

For at forstå, hvordan Docker har været gavnlig i løsningen af ​​dette problem, skal du henvise til det næste afsnit, der diskuterer fordele og ulemper ved at bruge Docker.

Kort sagt, Docker ville virtualisere operativsystemet for den vært, som det er installeret og kører i stedet for at virtualisere hardwarekomponenterne.

Fordele og ulemper ved at bruge Docker

Fordele ved at bruge Docker

Nogle af de vigtigste fordele ved at bruge Docker er vist nedenfor:

  • Docker understøtter flere applikationer med forskellige applikationskrav og afhængigheder, der skal hostes sammen på den samme vært, så længe de har de samme operativsystemkrav.
  • Opbevaring optimeret. Et stort antal applikationer kan være vært på den samme vært, da containere normalt er få megabyte i størrelse og bruger meget lidt diskplads.
  • Robusthed. En container har ikke et operativsystem installeret på den. Således bruger den meget lidt hukommelse i sammenligning med en virtuel maskine (som ville have et komplet operativsystem installeret og kørt på det). Dette reducerer også opstarttiden til blot et par sekunder sammenlignet med et par minutter, der kræves for at starte en virtuel maskine op.
  • Reducerer omkostningerne. Docker er mindre krævende, når det kommer til den hardware, der kræves for at køre den.

Ulemper ved at bruge Docker

  • Programmer med forskellige operativsystemkrav kan ikke hostes sammen på samme Docker Host. Lad os sige, at vi har 4 forskellige applikationer, hvoraf 3 applikationer kræver et Linux-baseret operativsystem, og det andet program kræver et Windows-baseret operativsystem. I et sådant scenario kan de 3 applikationer, der kræver Linux-baseret operativsystem, være vært på en enkelt Docker Host, mens applikationen, der kræver et Windows-baseret operativsystem, skal være vært på en anden Docker Host.

Kerneelementer i Docker

Docker Engine er en af ​​kernekomponenterne i Docker. Det er ansvarlig for den overordnede funktion af Docker-platformen.

Docker Engine er en klient-server baseret applikation og består af 3 hovedkomponenter.

  1. Server
  2. REST API
  3. Klient
Billedkilde: https://docs.docker.com

Serveren kører en daemon kendt som dockerd (Docker Daemon), som kun er en proces. Det er ansvarligt for at oprette og administrere Docker-billeder, containere, netværk og volumener på Docker-platformen.

REST-API'en specificerer, hvordan applikationerne kan interagere med serveren, og instruerer den til at få deres arbejde gjort.

Klienten er intet andet end en kommandolinjegrænseflade, der giver brugerne mulighed for at interagere med Docker ved hjælp af kommandoerne.

Docker-terminologi

Lad os se hurtigt på nogle af terminologierne forbundet med Docker.

Docker-billeder og Docker-containere er de to vigtige ting, som du vil støde på hver dag, mens du arbejder med Docker.

Kort sagt er et Docker-billede en skabelon, der indeholder applikationen, og alle de afhængigheder, der kræves for at køre applikationen på Docker.

På den anden side, som tidligere nævnt, er en Docker Container en logisk enhed. Mere præcist er det en kørende forekomst af Docker Image.

Hvad er Docker Hub?

Docker Hub er det officielle online depot, hvor du kunne finde alle Docker-billeder, der er tilgængelige for os at bruge.

Docker Hub tillader os også at gemme og distribuere vores brugerdefinerede billeder, hvis vi ønsker det. Vi kunne også gøre dem enten offentlige eller private, baseret på vores krav.

Bemærk: Gratis brugere har kun tilladelse til at holde et Docker-billede som privat. Hvis vi ønsker at beholde mere end et Docker-billede som privat, er vi nødt til at abonnere på en betalt abonnementsplan.

Docker-udgaver

Docker fås i 2 forskellige udgaver, som anført nedenfor:

  • Community Edition (CE)
  • Enterprise Edition (EE)

Community Edition er velegnet til individuelle udviklere og små teams. Det tilbyder begrænset funktionalitet i sammenligning med Enterprise Edition.

Enterprise Edition er på den anden side velegnet til store teams og til at bruge Docker i produktionsmiljøer.

Enterprise Edition er yderligere kategoriseret i tre forskellige udgaver, som anført nedenfor:

  • Grundlæggende udgave
  • Standardudgave
  • Avanceret udgave

Installation af Docker

En sidste ting, som vi har brug for at vide, før vi går videre og får vores hænder beskidte med Docker, er faktisk at have Docker installeret.

Nedenfor er linkene til de officielle Docker CE installationsguider. Du kan følge disse vejledninger for at installere Docker på din maskine, da de er enkle og ligetil.

  • CentOS Linux
  • Debian Linux
  • Fedora Linux
  • Ubuntu Linux
  • Microsoft Windows
  • MacOS

Ønsker du at springe installationen over og gå direkte til træning af Docker?

Bare i tilfælde af at du føler dig for doven til at installere Docker, eller hvis du ikke har nok ressourcer til rådighed på din computer, behøver du ikke at bekymre dig - her er løsningen på dit problem.

Du kan gå over til Play with Docker, som er en online legeplads for Docker. Det giver brugerne mulighed for at øve Docker-kommandoer med det samme uden at skulle installere noget på din maskine. Den bedste del er, at det er nemt at bruge og er gratis tilgængeligt.

Docker-kommandoer

Nu er det tid til at få vores hænder beskidte med Docker-kommandoer, som vi alle har ventet på indtil nu.

docker oprette

Den første kommando, som vi vil se på, er docker create-kommandoen.

Denne kommando giver os mulighed for at oprette en ny container.

Syntaks for denne kommando er som vist nedenfor:

docker oprette [indstillinger] BILLED [kommandoer] [argumenter]

Bemærk: Alt, der er lukket inden i de firkantede parenteser, er valgfrit. Dette gælder for alle de kommandoer, du vil se i denne vejledning.

Nogle af eksemplerne på brug af denne kommando er vist nedenfor:

$ docker skabe fedora
02576e880a2ccbb4ce5c51032ea3b3bb8316e5b626861fc87d28627c810af03

I ovenstående eksempel ville docker-oprettelseskommandoen oprette en ny container ved hjælp af det nyeste Fedora-billede.

Før du opretter containeren, vil det kontrollere, om det seneste officielle billede af Fedora er tilgængeligt på Docker Host eller ej. Hvis det nyeste billede ikke er tilgængeligt på Docker Host, vil det derefter gå videre og downloade Fedora-billedet fra Docker Hub, før du opretter containeren. Hvis Fedora-billedet allerede er til stede på Docker Host, vil det bruge dette billede og oprette containeren.

Hvis containeren blev oprettet med succes, returnerer Docker container-ID. For eksempel er i ovenstående eksempel 02576e880a2ccbb4ce5c51032ea3b3bb8316e5b626861fc87d28627c810af03 containeren ID returneret af Docker.

Hver container har et unikt container-ID. Vi henviser til containeren, der bruger dens container-ID til udførelse af forskellige handlinger på containeren, såsom start, stop, genstart og så videre.

Lad os nu henvise til et andet eksempel på kommando til oprettelse af docker, som har indstillinger og kommandoer, der sendes til den.

$ docker oprette -t-i ubuntu bash
30986b73dc0022dbba81648d9e35e6e866b4356f026e75660460c3474f1ca005

I ovenstående eksempel opretter docker-oprettelseskommandoen en container ved hjælp af Ubuntu-billedet (som tidligere nævnt, hvis billedet ikke er tilgængeligt på Docker Host, vil det gå videre og downloade det nyeste billede fra Docker Hub før du opretter containeren ).

Valgmulighederne -t og -i instruerer Docker at tildele en terminal til containeren, så brugeren kan interagere med containeren. Den instruerer også Docker om at udføre bash-kommandoen, når containeren startes.

docker ps

Den næste kommando, vi vil se på, er docker ps-kommandoen.

Med docker ps-kommandoen kan vi se alle containere, der kører på Docker Host.

$ docker ps
CONTAINER ID BILLEDE KOMMAND OPRETTET STATUS PORTSNAVNE
30986b73dc00 ubuntu "bash" for 45 minutter siden Op Om et minut elated_franklin

Det viser kun de containere, der i øjeblikket kører på Docker Host.

Hvis du vil se alle containerne, der blev oprettet på denne Docker Host, uanset deres aktuelle status, f.eks. Om de kører eller forlader, skal du medtage indstillingen -a, som igen viser alle containerne der blev oprettet på denne Docker-vært.

$ docker ps -a
CONTAINER ID BILLEDE KOMMAND OPRETTET STATUS PORTSNAVNE
30986b73dc00 ubuntu “bash” For cirka en time siden Op 29 minutter elated_franklin
02576e880a2c fedora “/ bin / bash” For cirka en time siden Oprettet hungrig_sinoussi

Inden vi fortsætter videre, lad os prøve at afkode og forstå output fra docker ps-kommandoen.

CONTAINER ID: En unik streng bestående af alfanumeriske tegn, der er knyttet til hver container.

BILLEDE: Navnet på Docker-billedet, der blev brugt til at oprette denne beholder.

COMMAND: Alle applikationsspecifikke kommandoer, der skal udføres, når containeren startes.

OPRETTET: Dette viser den tid, der er gået, siden denne beholder er oprettet.

STATUS: Dette viser beholderens aktuelle status sammen med den forløbne tid i dens nuværende tilstand.

Hvis containeren kører, vises den som Op sammen med den forløbne periode (for eksempel Op ca. en time eller Op 3 minutter).

Hvis beholderen stoppes, vises den som afsluttet efterfulgt af udgangsstatuskoden inden for runde parenteser sammen med den forløbne periode (for eksempel afsluttet (0) 3 uger siden eller afsluttet (137) for 15 sekunder siden, hvor 0 og 137 er udgangskoder).

PORTS: Dette viser de portkort, der er defineret til containeren.

NAVN: Bortset fra CONTAINER ID tildeles hver container også et unikt navn. Vi kan henvise til en container enten ved hjælp af dens container-id eller dets unikke navn. Docker tildeler automatisk et unikt fjollet navn til hver container, den opretter. Men hvis du vil specificere dit eget navn til beholderen, kan du gøre det ved at inkludere - - navn (dobbelt bindestrek navn) til dockeroprettelsen eller dockerkøringen (vi ser på kommandoen docker run senere).

Jeg håber, at dette giver dig en bedre forståelse af output fra docker ps-kommandoen.

docker start

Den næste kommando, vi vil se på, er docker-startkommandoen.

Denne kommando starter alle stoppede containere.

Syntaks for denne kommando er som vist nedenfor:

docker start [indstillinger] CONTAINER ID / NAME [CONTAINER ID / NAME…]

Vi kan starte en container enten ved at specificere de første par unikke tegn i dens container-ID eller ved at specificere dens navn.

Nogle af eksemplerne på brug af denne kommando er vist nedenfor:

$ docker start 30986

I ovenstående eksempel starter Docker containeren, der begynder med container ID 30986.

$ docker starter elated_franklin

Mens der i dette eksempel starter Docker containeren med navnet elated_franklin.

docker stop

Den næste kommando på listen er docker stop-kommandoen.

Denne kommando stopper alle kørende containere.

Syntaks for denne kommando er som vist nedenfor:

docker stop [indstillinger] CONTAINER ID / NAME [CONTAINER ID / NAME…]

Det ligner docker-startkommandoen.

Vi kan stoppe containeren enten ved at specificere de første par unikke tegn i dens container-ID eller ved at specificere dens navn.

Nogle af eksemplerne på brug af denne kommando er vist nedenfor:

$ docker stop 30986

I ovenstående eksempel vil Docker stoppe beholderen, der begynder med beholder-ID 30986.

$ docker stop elated_franklin

Mens Docker i dette eksempel stopper containeren med navnet elated_franklin.

docker genstart

Den næste kommando, vi vil se på, er docker-genstart-kommandoen.

Denne kommando genstarter alle kørende containere.

Syntaks for denne kommando er som vist nedenfor:

docker genstart [indstillinger] CONTAINER ID / NAME [CONTAINER ID / NAME…]

Vi kan genstarte containeren enten ved at specificere de første par unikke tegn i dens container-ID eller ved at specificere dens navn.

Nogle af eksemplerne på brug af denne kommando er vist nedenfor:

$ docker genstarter 30986

I ovenstående eksempel vil Docker genstarte containeren, der begynder med beholder-ID 30986.

$ docker genstarter elated_franklin

Mens Docker i dette eksempel genstarter containeren med navnet elated_franklin.

docker køre

Den næste kommando, vi ser på, er kommandoen docker run.

Denne kommando opretter først containeren, og derefter starter den containeren. Kort sagt, denne kommando er en kombination af docker-oprettelse og docker-start-kommandoen.

Syntaks for denne kommando er som vist nedenfor:

docker køre [indstillinger] BILDE [kommandoer] [argumenter]

Det har en syntaks, der ligner kommandoen til docker-oprettelse.

Nogle af eksemplerne på brug af denne kommando er vist nedenfor:

$ docker kører ubuntu
30fa018c72682d78cf168626b5e6138bb3b3ae23015c5ec4bbcc2a088e67520

I ovenstående eksempel vil Docker oprette containeren ved hjælp af det nyeste Ubuntu-billede og derefter starte containeren med det samme.

Hvis vi udfører den ovennævnte kommando, vil den starte containeren og straks stoppe den - vi vil ikke have nogen chance for at interagere med containeren overhovedet.

Hvis vi ønsker at interagere med containeren, er vi nødt til at specificere indstillingerne: -it (bindestreg efterfulgt af i og t) til docker run-kommandoen præsenterer os med terminalen, som vi kan interagere med containeren ved at skrive i passende kommandoer. Nedenfor er et eksempel på det samme.

$ docker køre - det ubuntu
root @ e4e633428474: / #

For at komme ud af beholderen skal du indtaste exit i terminalen.

docker rm

Gå videre til den næste kommando - hvis vi ønsker at slette en container, bruger vi kommandoen docker rm.

Syntaks for denne kommando er som vist nedenfor:

docker rm [optioner] CONTAINER ID / NAME [CONTAINER ID / NAME ...]

Nogle af eksemplerne på brug af denne kommando er vist nedenfor:

$ docker rm 30fa elated_franklin

I ovenstående eksempel instruerer vi Docker om at slette 2 containere i en enkelt kommando. Den første container, der skal slettes, specificeres ved hjælp af dens container-ID, og ​​den anden container, der skal slettes, specificeres ved hjælp af dens navn.

Bemærk: Beholdere skal være i stoppet tilstand for at blive slettet.

docker-billeder

docker-billeder er den næste kommando på listen.

Denne kommando viser alle Docker-billeder, der findes på din Docker Host.

$ docker-billeder
REPOSITORY TAG BILLEDE SKAPET STØRRELSE
mysql seneste 7bb2586065cd for 38 timer siden 477MB
httpd seneste 5eace252f2f2 38 timer siden 132 MB
ubuntu 16.04 9361ce633ff1 2 uger siden 118MB
ubuntu trusty 390582d83ead 2 uger siden 188MB
fedora nyeste d09302f77cfc for 2 uger siden 275MB
ubuntu seneste 94e814e2efa8 2 uger siden 88.9MB

Lad os afkode output fra docker images-kommandoen.

REPOSITORY: Dette repræsenterer det unikke navn på Docker Image.

TAG: Hvert billede er knyttet til et unikt tag. Et tag repræsenterer dybest set en version af billedet.

Et mærke er normalt repræsenteret enten ved hjælp af et ord eller et sæt tal eller en kombination af alfanumeriske tegn.

IMAGE ID: En unik streng bestående af alfanumeriske tegn, der er knyttet til hvert billede.

OPRETTET: Dette viser den tid, der er gået, siden dette billede er oprettet.

STØRRELSE: Dette viser størrelsen på billedet.

docker rmi

Den næste kommando på listen er docker rmi-kommandoen.

Kommandoen docker rmi tillader os at fjerne et billede (r) fra Docker Host.

Syntaks for denne kommando er som vist nedenfor:

docker rmi [indstillinger] BILLEDSNAVN / ID [BILLEDSNAVN / ID ...]

Nogle af eksemplerne på brug af denne kommando er vist nedenfor:

docker rmi mysql

Ovenstående kommando fjerner billedet med navnet mysql fra Docker Host.

docker rmi httpd fedora

Ovenstående kommando fjerner billederne navngivet httpd og fedora fra Docker Host.

docker rmi 94e81

Ovenstående kommando fjerner billedet, der starter med billedet ID 94e81 fra Docker Host.

docker rmi ubuntu: pålidelig

Ovenstående kommando fjerner billedet med navnet ubuntu med mærket pålideligt fra Docker Host.

Dette var nogle af de grundlæggende Docker-kommandoer, du vil se. Der er mange flere Docker-kommandoer at udforske.

Oppakningen

Containerisering har for nylig fået den opmærksomhed, den fortjener, selvom den har eksisteret i lang tid. Nogle af de topteknologiske virksomheder som Google, Amazon Web Services (AWS), Intel, Tesla og Juniper Networks har deres egen brugerdefinerede version af containermotorer. De er meget afhængige af dem for at opbygge, køre, administrere og distribuere deres applikationer.

Docker er en ekstremt kraftig containeriseringsmotor, og den har meget at tilbyde, når det kommer til at bygge, køre, styre og distribuere dine applikationer effektivt.

Du har lige set Docker på et meget højt niveau. Der er meget mere at lære om Docker, såsom:

  • Docker-kommandoer (mere kraftfulde kommandoer)
  • Docker-billeder (Lav dine egne brugerdefinerede billeder)
  • Docker-netværk (opsætning og konfigurering af netværk)
  • Docker Services (Grupper af containere, der bruger det samme billede)
  • Docker Stack (grupperingstjenester krævet af en applikation)
  • Docker Compose (værktøj til styring og drift af flere containere)
  • Docker Swarm (gruppering og styring af en eller flere maskiner, som docker kører på)
  • Og meget mere…

Hvis du har fundet Docker at være fascinerende og er interesseret i at lære mere om det, vil jeg anbefale dig at tilmelde dig de kurser, der er anført nedenfor. Jeg fandt dem meget informative og lige til det punkt.

Hvis du er en absolut begynder, vil jeg foreslå, at du tilmelder dig dette kursus, som er designet til begyndere.

Hvis du har god viden om Docker og er temmelig sikker på de grundlæggende ting og ønsker at udvide din viden, vil jeg foreslå, at du tilmelder dig dette kursus, der er mere rettet mod avancerede emner relateret til Docker.

Docker er en fremtidssikret færdighed og er bare ved at tage fart.

At investere din tid og penge for at lære Docker ville ikke være noget, du ville omvende sig for.

Håber du fandt, at dette indlæg var informativt. Tøv ikke med at holde for det (En åben hemmelighed: Du kan klappe op til 50 gange for et indlæg, og det bedste er, at det ikke koster dig en krone), så velkommen til at dele det på tværs. Dette betyder virkelig meget for mig.

En sidste ting, inden du rejser ...

Lad os holde kontakten, klik her for at indtaste din e-mail-adresse (Brug dette link, hvis ovenstående widget ikke vises på din skærm).

Tak så meget for at have taget din dyrebare tid til at læse dette indlæg.

Ansvarsfraskrivelse: Alle produkt- og firmanavne er varemærker ™ eller registrerede® varemærker tilhørende deres respektive indehavere. Brug af dem indebærer ingen påtegning fra dem. Der kan være tilknyttede links inden for dette indlæg.