Docker file рецепт для Docker images. Как рождается Docker контейнер c помощью Docker build.
Innholdsfortegnelse:
Et Docker-bilde er tegningen av Docker-containere som inneholder applikasjonen og alt du trenger for å kjøre applikasjonen. En container er en runtime-forekomst av et bilde.
I denne opplæringen skal vi forklare hva Dockerfile er, hvordan man lager en, og hvordan man bygger et Docker-bilde med Dockerfile.
Hva er Dockerfile
En Dockerfile er en tekstfil som inneholder alle kommandoene en bruker kan kjøre på kommandolinjen for å lage et bilde. Den inneholder alle instruksjonene som Docker trenger for å bygge et bilde.
Docker-bilder består av en serie filsystemlag som representerer instruksjoner i bildets Dockerfile som utgjør et kjørbart program.
Docker-filen har følgende form:
# Comment INSTRUCTION arguments
INSTRUCTION
er ikke store og små bokstaver, men konvensjonen er å bruke UPPERCASE for navnene.
Nedenfor er listen med en kort beskrivelse av noen av de mest brukte Dockerfile instruksjonene:
- ARG - Denne instruksjonen lar deg definere variabler som kan sendes ved byggetid. Du kan også angi en standardverdi. FRA - Basebildet for å bygge et nytt bilde. Denne instruksjonen må være den første instruksjonen uten kommentarer i Dockerfile. Det eneste unntaket fra denne regelen er når du vil bruke en variabel i
FROM
argumentet. I dette tilfellet kanFROM
gå foran en eller flereARG
instruksjoner. LABEL - Brukes til å legge metadata til et bilde, for eksempel beskrivelse, versjon, forfatter.. osv. Du kan spesifisere mer enn ettLABEL
, og hverLABEL
instruksjon er et nøkkelverdipar. Kjør - Kommandoene spesifisert i denne instruksjonen vil bli utført under byggeprosessen. HverRUN
instruksjon oppretter et nytt lag på toppen av det nåværende bildet. LEGG TIL - Brukes til å kopiere filer og kataloger fra den angitte kilden til den angitte destinasjonen på dockerbildet. Kilden kan være lokale filer eller kataloger eller en URL. Hvis kilden er et lokalt tjærearkiv, pakkes den automatisk inn i Docker-bildet. KOPI - Ligner påADD
men kilden kan bare være en lokal fil eller katalog. ENV - Denne instruksjonen lar deg definere en miljøvariabel. CMD - Brukes til å spesifisere en kommando som skal utføres når du kjører en container. Du kan bare bruke enCMD
instruksjon i Dockerfile. ENTRYPOINT - I likhet medCMD
definerer denne instruksjonen hvilken kommando som skal utføres når du kjører en container. WORKDIR - Dette direktivet angir gjeldende arbeidskatalog for instruksjoneneRUN
,CMD
,ENTRYPOINT
,COPY
ogADD
. BRUKER - Angi brukernavn ellerUID
skal brukes når du kjører følgendeRUN
,CMD
,ENTRYPOINT
,ENTRYPOINT
ogADD
instruksjoner. VOLUME - Gjør det mulig å montere en vertsmaskinkatalog til beholderen. EKSPONERING - Brukes til å spesifisere porten som containeren lytter til under kjøretid.
Hvis du vil ekskludere filer og kataloger fra å bli lagt til i bildet, oppretter du en
.dockerignore
fil i kontekstkatalogen. Syntaks for
.dockerignore
ligner på den av Git's
.gitignore
fil.
For den fullstendige referansen og detaljerte forklaringen av Dockerfile-instruksjonene, se den offisielle Dockerfile-referansesiden.
Lag en Dockerfile
Det vanligste scenariet når du oppretter Docker-bilder er å trekke et eksisterende bilde fra et register (vanligvis fra Docker Hub) og spesifisere endringene du vil gjøre på basisbildet. Det mest brukte basebildet når du lager Docker-bilder er Alpine fordi det er lite og optimalisert for å kjøres i RAM.
I dette eksemplet vil vi lage et Docker-bilde for Redis-serveren. Vi bruker den nyeste ubuntu 18.04 som et grunnbilde.
Lag først en katalog som vil inneholde Dockerfile og alle nødvendige filer:
mkdir ~/redis_docker
Naviger til katalogen og lag følgende Dockerfile:
cd ~/redis_docker
nano Dockerfile
Dockerfile
FROM ubuntu:18.04 RUN apt-get update && \ apt-get install -y redis-server && \ apt-get clean EXPOSE 6379 CMD
La oss forklare betydningen av hver av linjene i Dockerfile:
- I linje
1
definerer vi grunnbildet.RUN
instruksjonen som starter i linje3
vil oppdatere apt-indeksen, installere pakken “redis-server” og rense apt cache. Kommandoene som brukes i instruksjoner er de samme som kommandoene du vil bruke for å installere redis på Ubuntu-server. EXPOSE-instruksjonen definerer porten som redis-serveren skal lytte til på. I den siste linjen bruker viCMD
instruksjonen for å sette standardkommandoen som vil bli utført når containeren går.
Lagre filen og lukk redigereren.
Bygge bildet
Neste trinn er å bygge bildet. Kjør følgende kommando fra katalogen der Dockerfile ligger:
docker build -t linuxize/redis.
Alternativet
-t
spesifiserer bildenavnet og eventuelt et brukernavn og etikett i formatet 'brukernavn / imagenavn: tagg'.
Utgangen fra byggeprosessen vil se slik ut:
Sending build context to Docker daemon 3.584kB Step 1/4: FROM ubuntu:18.04 ---> 7698f282e524 Step 2/4: RUN apt-get update && apt-get install -y gosu redis-server && apt-get clean ---> Running in e80d4dd69263… Removing intermediate container e80d4dd69263 ---> e19fb7653fca Step 3/4: EXPOSE 6379 ---> Running in 8b2a45f457cc Removing intermediate container 8b2a45f457cc ---> 13b92565c201 Step 4/4: CMD ---> Running in a67ec50c7048 Removing intermediate container a67ec50c7048 ---> d8acc14d9b6b Successfully built d8acc14d9b6b Successfully tagged linuxize/redis:latest
Når byggeprosessen er fullført, vil det nye bildet vises i bildelisten:
docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE linuxize/redis latest d8acc14d9b6b 4 minutes ago 100MB ubuntu 18.04 7698f282e524 5 days ago 69.9MB
Å kjøre en container
Nå som bildet er opprettet, kjører du en container fra det ved å kjøre:
docker run -d -p 6379:6379 --name redis linuxize/redis
Alternativene
-d
sier til Docker å kjøre beholderen i frittliggende modus, alternativet
-p 6379:6379
vil publisere porten 6379 til vertsmaskinen, og alternativet -
--name redis
spesifiserer beholdernavnet. Det siste argumentet
linuxize/redis
er navnet på bildet, som brukes til å kjøre containeren.
Når beholderen starter, bruk følgende kommando for å liste alle containere som kjører:
docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6b7d424cd915 linuxize/redis:v0.0.1 "redis-server '--pro…" 5 minutes ago Up 5 minutes 0.0.0.0:6379->6379/tcp redis
For å bekrefte at alt fungerer som det skal bruke
redis-cli
å koble til dockercontaineren:
redis-cli ping
Redis-serveren skal svare med
PONG
.
Konklusjon
Denne opplæringen dekket bare det grunnleggende om å bruke Dockerfiles til å lage bilder. Hvis du vil lære mer om hvordan du skriver Dockerfiles og anbefalt beste praksis, kan du se Best practices for å skrive Dockerfiles.
'Hvordan bygge en PC,' Den Interactive Geek Tech Video

Alle kan vise deg hvordan du bygger en PC fra grunnen av . Vi skal la deg velge din sti gjennom PC-konstruksjon gjennom bruk av en interaktiv YouTube-video!
Hvordan bygge og dele databaser på nettet

Lag forretningsdataene dine fra hvor som helst med en sterk og sikker nettbasert database. Slik gjør du det.
Det finnes et mangfoldig utvalg av tablettalternativer for å dumme og forbløffe shoppere denne ferien. Microsoft har en solid konkurrent med sin nåværende Surface-tablett, men den driver det mer begrensede Windows RT-operativsystemet som ble utviklet for bruk med ARM-baserte prosessorer. Jeg har allerede undersøkt hvordan overflaten RT slår iPad, og hvordan iPad slår Surface RT, men hvordan med tabletter som driver den kraftigere Windows 8 Pro OS?

Samsung Series 7 Slate har en Intel Core i5 prosessor.