Contain Yourself: An Intro to Docker and Containers by Nicola Kabar and Mano Marks
Indholdsfortegnelse:
Et Docker-billede er planen af Docker-containere, der indeholder applikationen og alt hvad du har brug for for at køre applikationen. En container er en runtime-forekomst af et billede.
I denne tutorial vil vi forklare, hvad Dockerfile er, hvordan man opretter en, og hvordan man bygger et Docker-billede med Dockerfile.
Hvad er Dockerfile
En Dockerfile er en tekstfil, der indeholder alle de kommandoer, en bruger kunne køre på kommandolinjen for at oprette et billede. Det indeholder alle de instruktioner, som Docker har brug for til at opbygge billedet.
Docker-billeder består af en række filsystemlag, der repræsenterer instruktioner i billedets Dockerfile, der udgør en eksekverbar softwareapplikation.
Docker-filen har følgende form:
# Comment INSTRUCTION arguments
INSTRUCTION
er ikke store og små bogstaver, men konventionen er at bruge UPPERCASE til dens navne.
Nedenfor er listen med en kort beskrivelse af nogle af de mest brugte Dockerfile instruktioner:
- ARG - Denne instruktion giver dig mulighed for at definere variabler, der kan videregives ved bygningstid. Du kan også indstille en standardværdi. FRA - Basisbillede til opbygning af et nyt billede. Denne instruktion skal være den første instruktion uden kommentar i Dockerfile. Den eneste undtagelse fra denne regel er, når du vil bruge en variabel i
FROM
argumentet. I dette tilfælde kanFROM
foregå med en eller flereARG
instruktioner. LABEL - Bruges til at tilføje metadata til et billede, såsom beskrivelse, version, forfatter.. osv. Du kan specificere mere end etLABEL
, og hverLABEL
instruktion er et nøgleværdipar. KØR - De kommandoer, der er specificeret i denne instruktion, udføres under byggeprocessen. HverRUN
instruktion opretter et nyt lag øverst på det aktuelle billede. TILFØJ - Bruges til at kopiere filer og mapper fra den angivne kilde til den specificerede destination på dockerbilledet. Kilden kan være lokale filer eller mapper eller en URL. Hvis kilden er et lokalt tjærarkiv, pakkes den automatisk ud i Docker-billedet. KOPI - LignerADD
men kilden kan kun være en lokal fil eller bibliotek. ENV - Denne instruktion giver dig mulighed for at definere en miljøvariabel. CMD - Bruges til at specificere en kommando, der udføres, når du kører en container. Du kan kun bruge enCMD
instruktion i din Dockerfile. ENTRYPOINT - I lighed medCMD
definerer denne instruktion, hvilken kommando der skal udføres, når du kører en container. WORKDIR - Dette direktiv indstiller den aktuelle arbejdsmappe til instruktionerneRUN
,CMD
,ENTRYPOINT
,COPY
ogADD
. BRUGER - Indstil brugernavnet ellerUID
skal bruges, når du kører følgendeRUN
,CMD
,ENTRYPOINT
,ENTRYPOINT
ogADD
instruktioner. VOLUME - Gør det muligt at montere et værtsmaskins bibliotek på beholderen. EKSPONERING - bruges til at specificere den port, som containeren lytter til under kørsel.
For at ekskludere filer og mapper fra at blive føjet til billedet skal du oprette en
.dockerignore
fil i kontekstmappen. Syntaks for
.dockerignore
ligner den i Git's
.gitignore
fil.
For en komplet henvisning og detaljeret forklaring af Dockerfile-instruktioner se den officielle Dockerfile-referenceside.
Opret en Dockerfile
Det mest almindelige scenarie, når du opretter Docker-billeder, er at trække et eksisterende billede fra et register (normalt fra Docker Hub) og specificere de ændringer, du vil foretage på basisbilledet. Det mest almindeligt anvendte basisbillede, når du opretter Docker-billeder, er Alpine, fordi det er lille og optimeret til at køre i RAM.
I dette eksempel opretter vi et Docker-billede til Redis-serveren. Vi bruger den nyeste ubuntu 18.04 som basisbillede.
Opret først et bibliotek, der vil indeholde Dockerfile og alle de nødvendige filer:
mkdir ~/redis_docker
Naviger til biblioteket og opret 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
Lad os forklare betydningen af hver af linjerne i Dockerfile:
- I linje
1
definerer vi basisbilledet.RUN
instruktionen, der starter i linje3
vil opdatere apt-indekset, installere pakken “redis-server” og rense apt cache. De kommandoer, der bruges i instruktioner, er de samme som de kommandoer, du vil bruge til at installere redis på Ubuntu-server. EXPOSE-instruktionen definerer den port, hvorpå redis-serveren lytter til. I den sidste linje bruger viCMD
instruktionen til at indstille standardkommandoen der udføres, når containeren kører.
Gem filen, og luk redigeringsprogrammet.
Bygning af billedet
Det næste trin er at opbygge billedet. Dette gøres ved at køre følgende kommando fra det bibliotek, hvor Dockerfile er placeret:
docker build -t linuxize/redis.
Indstillingen
-t
specificerer billednavnet og eventuelt et brugernavn og etiket i formatet 'brugernavn / imagenavn: tag'.
Output fra build-processen vil se sådan ud:
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 byggeprocessen er afsluttet, vises det nye billede på billedlisten:
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
Kører en container
Nu, hvor billedet er oprettet, kører du en container fra det ved at køre:
docker run -d -p 6379:6379 --name redis linuxize/redis
Valgmulighederne
-d
fortæller Docker at køre containeren i løsrevet tilstand, indstillingen
-p 6379:6379
offentliggør porten 6379 til værtsmaskinen, og indstillingen -
--name redis
specificerer containernavnet. Det sidste argument
linuxize/redis
er navnet på billedet, der bruges til at køre containeren.
Når containeren starter, skal du bruge følgende kommando til at liste alle kørende containere:
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 at kontrollere, at alt fungerer som det skal bruge
redis-cli
til at oprette forbindelse til
redis-cli
:
redis-cli ping
Redis-serveren skal svare med
PONG
.
Konklusion
Denne tutorial dækkede kun det grundlæggende ved at bruge Dockerfiles til at opbygge billeder. For at lære mere om, hvordan du skriver Dockerfiles og den anbefalede bedste praksis, se Best practices for skrivning af Dockerfiles.
Sådan oprettes en hæfte eller bog med Microsoft Word

Microsoft Word giver dig mulighed for at oprette et hændelsesbogen eller en bog, der både ser professionel og imponerende, ved hjælp af enhver hæftehilsen, du ønsker.
Sådan oprettes en detaljeret online adressebog med postabel

Lær, hvordan du nemt opretter en detaljeret online adressebog med postabel.
Sådan oprettes og deles personlige videobeskeder med mailvu

Lær hvordan du opretter og deler personlige videomeddelelser med MailVU gratis.