Docker er et open source-verktøy som pakker applikasjon (er), alle nødvendige pakker og dets basisoperativsystem i containeriserte pakker. Ettersom Docker -containere er frittstående, kjører de på noe system uten behov for rekonfigurasjon.
Docker bygger containere fra bilder. Et Docker -bilde er en frittstående pakke som definerer alle kravene som trengs for å kjøre en applikasjon, for eksempel operativsystem, runtime, systemverktøy, biblioteker, konfigurasjoner og mer. Docker konverterer bildene til containere under kjøretid.
Docker bygger bilder fra konfigurasjoner definert i en dockerfile. En DockerFile er ganske enkelt en konfigurasjonsfil som sier alle instruksjonene om å lage et Docker -bilde. Som et resultat er det enklere og mye mer effektivt å bygge Docker -bilder med en DockerFile.
Denne guiden vil lede deg gjennom å lage en Dockerfile og bruke den til å bygge et Docker -bilde.
DockerFile -format
Dockerfile er et rå tekstdokument. Oppføringer i Dockerfile er i følgende format:
$ Instruksjonsargument (er)
Den første delen definerer Docker -kommandoene du kan bruke i et Docker Shell. Det andre representerer argumentene eller spesifikke verdier som skal overføres til den primære instruksjonen.
MERK: Instruksjonene er ikke saksfølsomme. Imidlertid anbefaler Docker å bruke store bokstaver for å skille dem fra argumenter.
Følgende er noen populære instruksjoner i en dockerfile.
FRA - Denne instruksjonen definerer foreldrebildet for påfølgende instruksjoner. Fra klausulen må være den første oppføringen i en dockerfile. Det kan komme etter en kommentar eller analysere direktiv eller ARG brukt i fra direktivet.
Arg - Den definerer variabler brukt under byggingen når du kjører Docker Build -kommandoen på filen.
CMD - Dette setter kommandoen utført ved oppretting av container. Docker tillater bare en CMD -instruksjon per fil. Når du har mer enn en definert, kjører den den siste kommandoen.
MERKELAPP - Etikettinstruksjonen definerer metadatainformasjon for bildet. Du kan legge til så mange etiketter som du synes passer i form av nøkkelverdipar. For eksempel kan bildemetadata inkludere versjonsnummer, forfatterinformasjon, beskrivelse osv.
LØPE - Angir instruksjonene som skal utføres under bildebyggingen.
BRUKER - Denne instruksjonen angir brukernavnet eller UID for brukeren når du kjører bildet eller instruksjonene i en DockerFile som CMD, Run og EntryPoint.
INNGANGSPUNKT - Den definerer kommandoene Docker utfører ved oppretting av container. Alternativene kan overskrives i kommandolinjen under oppstart av container.
LEGG TIL - Denne instruksjonen kopierer filer og kataloger fra den spesifiserte kilden til et spesifisert reisemål. Kilden kan være en lokal bane eller en ekstern nettadress. Hvis filene er arkiver, pakker Docker dem automatisk ut i bildet.
VOLUM - Voluminstruksjonene lar deg lage monteringspunkter fra vertsmaskinkataloger eller andre containere.
AVDEKKE - Denne instruksjonen forteller Docker hvilken port som skal lytte til under kjøretid.
Env - Det setter miljøvariabler.
Workdir - Angir den gjeldende arbeidskatalogen. Hvis den spesifiserte katalogen ikke eksisterer, vil Docker automatisk opprette en.
Ovennevnte er noen standardinstruksjoner du kan bruke i en dockerfile.
Hvordan lage en dockerfile
Prosessen med å lage en dockerfile er grei. Begynn med å lage en fungerende katalog for Docker -operasjonene dine. Deretter lager du en Dockerfile og redigerer den med din favoritt tekstredigerer.
$ CD ~
$ mkdir docker
$ CD Docker
$ Touch Dockerfile
$ vim dockerfile
Vi starter med å få basisbildet fra Docker Hub. Vi kan gjøre dette ved å bruke fra instruksjon i Dockerfile.
I dette eksemplet vil vi lage en enkel container som inneholder NGINX -server på Debian 10 -bilde.
Debian 10 Bilde på Docker Hub
Rediger dockerfilen og legg til følgende oppføringer.
Fra Ebian: 10.9
Kjør apt-get Update && \
apt -get install -y nginx \
Etikett vedlikeholder = ”Linuxhint”
Etikettversjon = ”1.0 ”
Etikettbeskrivelse = ”et enkelt bilde som kjører nginx på Debain 10”
Eksponer 80/TCP
Cmd [“nginx”, “-g”, 'daemon off;']
I ovennevnte Dockerfile starter vi med å definere basisbildet (Debian 10.9)
Vi kjører forskjellige passende kommandoer for å oppdatere pakker og installere nginx web-server.
Vi legger deretter til metadatainformasjon om bildet, inkludert vedlikeholder, versjon og beskrivelse.
Til slutt satte vi eksponeringsporten, og kommandoen slår av Nginx -demonen. Kommandoen over forhindrer at beholderen stopper.
Lagre filen og kjør Docker Build mot filen.
Hvordan du bygger et dockerfile -bilde
Når vi har fullført Dockerfile, kan vi fortsette å bygge bildet. Kjør kommandoen Docker Build Inside the Docker Directory:
$ CD ~/Docker
$ docker build -pull -rm -f “dockerfile” -t docker: siste “.”
I kommandoen ovenfor bruker vi Docker Build -kommandoen og passerer forskjellige alternativer. For eksempel forteller -pullen Docker å prøve å trekke den nyeste versjonen av bildet.
-RM fjerner umiddelbare containere etter at bildebyggingsprosessen er fullført.
-f Angir DockerFile -navnet.
Endelig setter -t -alternativet taggen for bildet.
Ovennevnte kommandoer vil bygge bildet og lagre det på din lokale disk.
Du kan bekrefte at bildet eksisterer ved å ringe kommandoen:
$ docker image ls
$ Docker siste 162e94589Bec 2 minutter siden 233MB
Hvordan lage en Docker -beholder
Nå som vi har bildet fra Dockerfile, kan vi gå foran og gyte en beholder. For å gjøre dette bruker vi Docker Run -kommandoen som:
$ Docker Run -P 80:80 -Navn Nginx Docker
Kommandoene ovenfor vil starte beholderen med navnet Nginx og binde beholderen til port 80.
For å vise løpende containere, bruk kommandoen:
$ docker container ls
1C90266035B5 NGINX: Siste for 57 sekunder siden opp 56 sekunder 80/TCP Nginx
Kommandoen over viser Nginx -beholderen i gang.
Konklusjon
Denne opplæringen dekket å skrive Dockerfiles, lage bilder og kjøre en Docker -beholder fra bildene. For å lære mer om Dockerfiles, bør du vurdere dokumentasjonen.