Docker skaper pakket programmer kalt containere. Hver beholder tilveiebringer et isolert miljø som ligner en virtuell maskin (VM). I motsetning til VMS Docker beholdere [1. 3] ikke kjøre en full operativsystem . De deler vertens kjerne og Virtual på en programvare nivå.
Docker Basics
Docker har blitt en standard verktøy for programvareutviklere og systemadministratorer. Det er en fin måte å raskt starte programmer uten å påvirke resten av systemet. Du kan spinne opp en ny tjeneste med et enkelt
Docker run
kommando.
Containere kapsle alt som trengs for å kjøre et program, fra OS pakkeavhengigheter til din egen kildekode. Du definerer creation trinn en container er som instruksjoner i en
Dockerfile
. Havnearbeider bruker Dockerfile å konstruere en
bilde
.
Bilder definere programvare tilgjengelig i containere. Dette er løst samme som å starte en VM med et operativsystem ISO. Hvis du oppretter et bilde, vil eventuelle Docker brukeren kunne lansere app med
Docker run
.
Hvordan virker Docker arbeid?
Beholdere utnytte operativsystemet kjerne funksjoner for å tilveiebringe delvis virtuelle miljøer. Det er mulig å lage beholderne fra grunnen av med kommandoer som
chroot
. Dette starter en prosess med en spesifisert rotkatalogen i stedet for systemet roten. Men ved hjelp av kernel har direkte er fiddly, usikker, og utsatt for feil.
Havnearbeider er en komplett løsning for fremstilling, distribusjon og bruk av beholdere. Moderne Docker utgaver består av flere uavhengige komponenter . Først, det er den Docker CLI , Som er hva du kommuniserer med i terminalen. CLI sender kommandoer til en Docker daemon . Dette kan kjøres lokalt eller på en ekstern vert . Nissen er ansvarlig for å administrere containere og bildene de er laget av.
Den siste komponenten kalles beholderen kjøretids . Runtime påkaller kernel funksjoner for å faktisk lansere beholdere. Docker er kompatibel med kjøretidsfiler som holder seg til OCI-spesifikasjonen. Denne åpne standarden tillater interoperabilitet mellom ulike containerization verktøy.
Du trenger ikke å bekymre deg for mye om Docker indre arbeid når du først kommer i gang. installere
Docker
på systemet vil gi deg alt du trenger for å bygge og drive beholdere.
Hvorfor så mange mennesker bruker Docker?
Containere har blitt så populære fordi de løse mange felles utfordringer i programvareutvikling. Evnen til å containerize gang og kjøre overalt reduserer gapet mellom utviklingsmiljø og dine produksjonsservere.
Ved hjelp av containere gir deg trygghet på at alle miljøer er identiske. Hvis du har et nytt team medlem, de bare trenger å
Docker run
å sette opp sin egen utvikling eksempel. Når du starter tjenesten, kan du bruke Docker bildet for å distribuere til produksjon. De
levende miljø
vil samsvare nøyaktig med din lokale eksempel, unngå “det fungerer på min maskin” scenarier.
Docker er mer praktisk enn en fullverdig virtuell maskin. VM er generelle verktøy som er utformet for å støtte alle mulige arbeidsmengde. I motsetning til beholderne er lette, selvforsynt, og bedre egnet til kast brukstilfeller. Som Docker deler vertens kjerne, containere har en ubetydelig innvirkning på systemets ytelse. Container lanseringen tid er nesten momentant, mens du bare starte prosesser, ikke et helt operativsystem.
Starter
Docker er tilgjengelig på alle populære Linux-distribusjoner. Det kjører også på Windows og MacOS. Følg Docker oppsettsinstruksjonene for din plattform for å få den opp og kjører.
Du kan sjekke at installasjonen fungerer ved å starte en enkel beholder:
Docker løp hei-verden
Dette vil starte en ny container med den grunnleggende
Hei Verden
bilde. Bildet avgir noen utgang forklarer hvordan du bruker Docker. Beholderen deretter utganger, slippe deg tilbake til terminalen.
Opprette Images
Når du har kjørt
Hei Verden
, Du er klar til å lage dine egne Docker-bilder. En DockerFile beskriver hvordan du kjører tjenesten din
Installere nødvendig programvare
og kopiere i filer. Her er et enkelt eksempel ved hjelp av Apache webserveren:
fra httpd: Siste Kjør ekko "loadmodule headers_module modules / mod_headers.so" & gt; & gt; /usr/local/apache2/conf/httpd.conf. Kopier .htaccess /var/www/html/.htaccess. Kopier index.html /var/www/html/index.html. Kopier CSS / / VAR / WWW / HTML / CSS
De
FRA
Linjen definerer basisbildet. I dette tilfellet starter vi fra det offisielle Apache-bildet. Docker bruker de gjenværende instruksjonene i Dockerfile på toppen av basisbildet.
De
LØPE
Stage kjører en kommando i beholderen. Dette kan være noen kommando tilgjengelig i beholderens miljø. Vi gjør det mulig for
overskrifter
Apache-modulen, som kan brukes av
.htaccess.
Fil for å sette opp rutingsregler.
De endelige linjene kopierer HTML- og CSS-filene i arbeidskatalogen din i containerbildet. Bildet ditt inneholder nå alt du trenger for å kjøre nettstedet ditt.
Nå kan du bygge bildet:
Docker Build -T My-Website: V1.
Docker vil bruke DockerFile til å konstruere bildet. Du vil se utdata i terminalen din som Docker kjører hver av instruksjonene dine.
De
-t.
i kommandoen
Merker bildet ditt
med et gitt navn (
My-website: v1
). Dette gjør det lettere å referere til i fremtiden. Tags har to komponenter, skilt av et kolon. Den første delen setter bildeavnet, mens den andre vanligvis betegner sin versjon. Hvis du unnlater tykktarmen, vil Docker standard
å bruke
siste
som tagversjonen.
De
.
På slutten av kommandoen forteller Docker å bruke DockerFile i din lokale arbeidskatalog. Dette også
setter byggekonteksten
, slik at du kan bruke filer og mapper i arbeidskatalogen med
KOPIERE
Instruksjoner i Dockerfile.
Når du har opprettet bildet ditt, kan du starte en beholder ved hjelp av
Docker kjøre
:
Docker Run -D -P 8080: 80 My-website: v1
Vi bruker noen ekstra flagg med
Docker kjøre
her. De
-D
Flagg gjør Docker CLI løsne fra beholderen, slik at den kan kjøre i bakgrunnen. En portkartlegging er definert med
-P.
, så port 8080 på vertskartene dine til port 80 i beholderen. Du bør se din nettside hvis du besøker
Localhost: 8080.
i nettleseren din.
Docker-bilder dannes av lag. Hver instruksjon i Dockerfile skaper et nytt lag. Du kan bruke avanserte bygningsfunksjoner til Referanse Flere Basisbilder , kassere mellomstore lag fra tidligere bilder.
Bildegistre
Når du har et bilde, kan du presse det til et register. Registre gi sentralisert lagring Slik at du kan dele beholdere med andre. Standardregisteret er Dockernav .
Når du kjører en kommando som refererer til et bilde, kontrollerer Docker først om den er tilgjengelig lokalt. Hvis det ikke er det, vil det prøve å trekke det fra Docker Hub. Du kan manuelt trekke bilder med
Docker Pull.
kommando:
Docker Trekk httpd: Siste
Hvis du vil publisere et bilde, opprette en
Dockernav
regnskap. Løpe
Docker Login.
og skriv inn ditt brukernavn og passord.
Neste, merk bildet ditt ved hjelp av Docker Hub Brukernavn:
Docker Tag My-Image: Siste Docker-Hub-Brukernavn / My-Image: Siste
Nå kan du skyve bildet ditt:
Docker Push Docker-Hub-Brukernavn / My-Image: Siste
Andre brukere vil kunne trekke bildet og starte beholderne med den.
Du kan Kjør ditt eget register Hvis du trenger privat bildeoppbevaring. Flere tredjepartstjenester også Tilbyr Docker-registrer som alternativer til Docker Hub.
Administrere beholderne dine
Docker CLI har flere kommandoer for å la deg administrere dine løpende beholdere. Her er noen av de mest nyttige å vite:
Oppføringsbeholdere
Docker PS.
Viser deg alle dine løpende beholdere. Legger til den
-en
Flagget vil vise stoppede containere også.
Stopper og starter beholdere
For å stoppe en beholder, løp
Docker stopper min beholder
. Erstatte
min beholder
med beholderens navn eller ID. Du kan få denne informasjonen fra
PS.
kommando. En stoppet beholder startes på nytt med
Docker starter min beholder
.
Beholdere kjører vanligvis så lenge deres hovedprosess forblir i live.
Start retningslinjene på nytt
Kontroller hva som skjer når en beholder stopper eller verten din starter på nytt. Sende
- Restart alltid
til
Docker kjøre
å lage en beholder omstart umiddelbart etter at den stopper.
Får et skall
Du kan
Kjør en kommando i
en beholder som bruker
Docker Exec min-container min kommando
. Dette er nyttig når du vil manuelt påkalle en kjørbar som er skilt til beholderens hovedprosess.
Legg til
-den
Flagg hvis du trenger interaktiv tilgang. Dette lar deg falle inn i et skall ved å løpe
Docker Exec -It min-container sh
.
Overvåke logger
Docker samler automatisk utdata utgitt til en beholderens standardinngangs- og utgangsstrømmer. De
Docker logger min container
Kommandoen vil vise en beholderlogger i terminalen din. De
--Følg
Flagg setter opp en kontinuerlig strøm, slik at du kan se logger i sanntid.
Rydder opp ressurser
Gamle beholdere og bilder kan raskt hoper seg på systemet ditt. Bruk
Docker RM My-Container
for å slette en beholder med sin ID eller navn.
Kommandoen for bilder er
Docker RMI My-Image: Siste
. Pass bildetes ID eller Full Tag-navn. Hvis du angir en tag, vil bildet ikke bli slettet til det ikke har flere merker tildelt. Ellers vil den oppgitte taggen bli fjernet, men bildens andre koder forblir brukbare.
Bulk clean-ups er mulige ved hjelp av
Docker beskjæring
kommando
. Dette gir deg en enkel måte å fjerne alle stoppede containere og redundante bilder.
Grafisk styring
Hvis terminalen ikke er din ting, kan du bruke tredjepartsverktøy til Sett opp et grafisk grensesnitt for Docker . Web Dashboards lar deg raskt overvåke og administrere installasjonen din. De hjelper deg også med å ta fjernkontrollen til beholderne dine.
Vedvarende datalagring
Docker containere er ephemeral som standard. Endringer som er gjort på en containerens filsystem vil ikke fortsette etter at beholderen stopper. Det er ikke trygt å
Kjør noen form for fillagringssystem
i en beholder startet med en grunnleggende
Docker kjøre
kommando.
Det er noen forskjellige tilnærminger til Administrere vedvarende data . Den vanligste er å bruke et dockervolum. Volumer er lagringsenheter som er montert i containerfilsystemer. Eventuelle data i et volum forblir intakt etter at den koblede beholderen stopper, slik at du kan koble til en annen beholder i fremtiden.
Opprettholde sikkerhet
Dokkeriserte arbeidsbelastninger kan være sikrere enn sine bare Metal-kolleger, da Docker gir litt separasjon mellom operativsystemet og tjenestene dine. Likevel er Docker et potensielt sikkerhetsproblem, som det
Kjører normalt AS
rot
og kan utnyttes for å kjøre skadelig programvare.
Hvis du bare kjører Docker som et utviklingsverktøy, er standardinstallasjonen generelt trygt å bruke. Produksjonsservere og maskiner med en nettverks-eksponert daemon-kontakt skal være herdet før du går live.
Revisjon av Docker-installasjonen å identifisere potensielle sikkerhetsproblemer. Det er Automatiserte verktøy tilgjengelig som kan hjelpe deg med å finne svakheter og foreslå resolusjoner. Du kan også Skann individuelle beholderbilder for problemer som kan utnyttes fra innsiden.
Arbeider med flere beholdere
De
Docker.
Kommandoen fungerer bare med en beholder om gangen. Du vil ofte bruke beholdere i aggregatet.
Docker komponerer
er et verktøy som lar deg definere beholderne dine erklært i en yaml-fil. Du kan starte dem alle sammen med en enkelt kommando.
Dette er nyttig når prosjektet ditt er avhengig av andre tjenester, for eksempel en webbackend som er avhengig av en databaseserver. Du kan definere begge beholderne i din
Docker-kompose.yml.
og dra nytte av strømlinjeformet ledelse med
Automatisk nettverk
.
Her er en enkel
Docker-kompose.yml.
fil:
versjon: "3"
Tjenester:
App:
Bilde: App-server: Siste
Porter:
- 8000: 80
Database:
Bilde: Database-server: Siste
Volumer:
- Database-data: / Data
Volumer:
Database-data:
Dette definerer to beholdere (
app.
og
database
). Et volum er opprettet for databasen. Dette blir montert på
/data
i beholderen. App-serverens port 80 er utsatt som 8000 på verten. Løpe
Docker-komponere up -d
å spinne opp begge tjenestene, inkludert nettverket og volumet.
Bruken av Docker Compose lar deg
Skriv gjenbrukbar
Containerdefinisjoner som du kan dele med andre. Du kan begå en
Docker-kompose.yml.
inn i din versjonskontroll i stedet for å ha utviklere husker
Docker kjøre
kommandoer.
Det er også andre tilnærminger til å kjøre flere containere. Docker app er. en fremvoksende løsning som gir et annet nivå av abstraksjon. Andre steder i økosystemet, Podman er et dockeralternativ Det lar deg lage "pods" av containere i terminalen din.
Container orkestrasjon
Docker kjører normalt ikke som-er i produksjon. Det er nå mer vanlig å bruke en orkestrasjonsplattform som Kubernetes eller docker swarm modus. Disse verktøyene er designet for å håndtere Flere beholderreplikater, som forbedrer skalerbarhet og pålitelighet.
Docker er bare en komponent i bredere containeriseringsbevegelse. Orkestratorer
utnytte det samme
Container Runtime Technologies for å gi et miljø som er bedre egnet for produksjon. Bruker flere container forekomster
tillater rullende oppdateringer
I tillegg til distribusjon på tvers av maskiner, gjør distribusjonen mer motstandsdyktig mot endring og avbrudd. Den vanlige
Docker.
CLI målretter en vert og jobber med individuelle beholdere.
En kraftig plattform for beholdere
Docker gir deg alt du trenger for å jobbe med containere. Det har blitt et nøkkelverktøy for programvareutvikling og systemadministrasjon. De viktigste fordelene økes isolasjon og bærbarhet for individuelle tjenester.
Bli kjent med Docker krever en forståelse av de grunnleggende beholder- og bildekonseptene. Du kan søke disse for å lage dine spesialiserte bilder og miljøer som inneholder arbeidsbelastningen.