Dockerfile er en simpel tekstfil, der indeholder alle de kommandoer, som brugeren kan kalde på kommandolinjen for at samle eller oprette et billede. Ved hjælp af docker build kan du nemt automatisere build, der kører flere kommandoer defineres i dockerfilen i rækkefølge.
For eksempel vil du downloade docker-billedet fra docker-hub'en til dine specifikke udviklingsbehov. Derefter vil du opdatere billedet, installere nogle pakker til din udviklingsproces. I dette tilfælde kan du oprette en dockerfil, inkludere alle parametre til dine specifikke behov og oprette dit brugerdefinerede billede. Når du har oprettet en dockerfil, kan du bruge den igen og igen til at opbygge det samme billede uden manuelt at installere alle nødvendige pakker til din udviklingsproces.
Dockerfile Basic
Inden du arbejder med dockerfile, hvis det er vigtigt at vide, hvordan man laver en dockerfile. Dockerfile inkluderer specifikke nøgleord, der kan bruges til at oprette et specifikt billede. En kort forklaring af alle nøgleord, der bruges i en dockerfil, er angivet nedenfor:
- FRA: Det bruges til at definere det grundbillede, som vi skal bygge på.
- TILFØJE: Det bruges til at tilføje filer til den container, der bygges. Enkelt sagt bruges RUN til at køre kommandoer og forpligter resultatet
- LØB: Det bruges til at tilføje lag til basisbilledet ved at installere komponenter.
- CMD: Det bruges til at køre kommandoer i starten af containeren. Disse kommandoer kører kun, når der ikke er angivet noget argument under kørsel af containeren.
- INDGANG: Det bruges til at køre kommandoer under containerinitialiseringsprocessen. Du skal bruge en ENTRYPOINT i din dockefile, hvis du vil starte en container automatisk efter at have bygget et billede.
- ENV: Det bruges til at definere miljøvariabler i containerens kørselstid.
- UDSÆTTE: Det bruges til at specificere lytteporten for at aktivere netværk på kørselstidspunktet.
- VEDLIGEHOLDER: Det bruges til at specificere navn og e-mail-id for billedskaberen.
- BRUGER: Det bruges til at specificere det brugernavn, der bruges til at køre containeren.
- BIND: Det bruges til at give adgang fra containeren til biblioteket på Docker-værten.
- WORKDIR: Det bruges til at specificere stien til den kommando, der skal udføres på kørselstidspunktet.
- ETIKET: Det bruges til at føje etiketter til dockerbilledet.
Oprettelse af Dockerfile
I dette afsnit opretter vi en dockerfil til at oprette et LAMP-serverbillede fra Ubuntu-basisbilledet.
Først skal du oprette en mappe for at gemme dockerfilen. Du kan oprette den med følgende kommando:
mkdir LAMPEOpret derefter et bibliotek med navnet Dockerfile inde i biblioteket:
nano LAMP / DockerfileTilføj følgende linjer:
FRA ubuntu: nyesteVEDLIGEHOLDER Hitesh Jethva
ENV DEBIAN_FRONTEND = ikke-interaktiv
KØR apt-get opdatering -y && apt-get installer apache2 mariadb-server
libapache2-mod-php php php-cli php-common php-mysql php-json php-curl -y
CMD ["apachectl", "- D", "FOREGROUND"]
EKSPONER 8080
Gem og luk filen, når du er færdig.
Bygningsbillede med Dockerfile
Efter oprettelse af Dockerfile kan du nemt oprette et brugerdefineret LAMP-billede ved hjælp af Dockerfile.
Skift først biblioteket til LAMP og kør følgende kommando for at oprette billedet fra den fil:
cd LAMPEdocker build -t "lampe: Dockerfile".
Ovenstående kommando begynder at downloade det nyeste Ubuntu-billede fra Docker Hub og installere nødvendige pakker, der er specificeret i Dockerfile. Når billedet er bygget med succes, skal du se følgende output:
Afsendelse af byggekontekst til Docker-dæmon 2.048 kBTrin 1/6: FRA ubuntu: nyeste
seneste: Henter fra bibliotek / ubuntu
54ee1f796a1e: Træk komplet
f7bfea53ad12: Træk komplet
46d371e02073: Træk komplet
b66c17bbf772: Træk komplet
Fordøjelse: sha256: 31dfb10d52ce76c5ca0aa19d10b3e6424b830729e32a89a7c6eee2cda2be67a5
Status: Downloadet nyere billede til ubuntu: nyeste
---> 4e2eef94cd6b
Trin 2/6: VEDLIGEHOLDER Hitesh Jethva
---> Kører i 047977af2c2a
Fjernelse af mellembeholder 047977af2c2a
---> 1331df625c4c
Trin 3/6: ENV DEBIAN_FRONTEND = ikke-interaktiv
---> Kører i 3597152c7a1b
Fjernelse af mellembeholder 3597152c7a1b
---> 86c82c95e75d
Trin 4/6: KØR apt-get update -y && apt-get install apache2 mariadb-server
libapache2-mod-php php php-cli php-common php-mysql php-json php-curl -y
Fjernelse af mellembeholder 322532299fd9
---> f6897a9554f7
Trin 5/6: CMD ["apachectl", "- D", "FOREGROUND"]
---> Kører i 669635bc8bcb
Fjernelse af mellembeholder 669635bc8bcb
---> e8400eb2e677
Trin 6/6: EKSPONER 8080
---> Kører i 937ae2b2d305
Fjernelse af mellembeholder 937ae2b2d305
---> 2123a857361d
Vellykket bygget 2123a857361d
Tagget lampe med succes: Dockerfile
Du kan nu liste dit nyoprettede billede ved at køre følgende kommando:
docker-billederDu skal se følgende output:
REPOSITORY TAG BILLED-ID OPRETTET STØRRELSElampe Dockerfile 2123a857361d 44 sekunder siden 520MB
ubuntu seneste 4e2eef94cd6b 8 dage siden 73.9 MB
Nu har du et brugerdefineret LAMP-serverbillede i din hånd. Du kan også se historikken for hver kommando med følgende kommando:
docker historie lampe: DockerfileDu skal se følgende output:
BILLEDE OPRET OPLAGET AF STØRRELSESKOMMENTARER2123a857361d for 16 minutter siden / bin / sh -c # (nop) EXPOSE 8080 0B
e8400eb2e677 for 16 minutter siden / bin / sh -c # (nop) CMD ["apachectl" "-D" "FO… 0B
f6897a9554f7 for 16 minutter siden / bin / sh -c apt-get update -y && apt-get inst… 446MB
86c82c95e75d 17 minutter siden / bin / sh -c # (nop) ENV DEBIAN_FRONTEND = nonin… 0B
1331df625c4c 17 minutter siden / bin / sh -c # (nop) VEDLIGEHOLDER Hitesh Jethva 0B
4e2eef94cd6b 8 dage siden / bin / sh -c # (nop) CMD ["/ bin / bash"] 0B
Oprettelse af en container fra LAMP-billede
Nu kan du køre en container fra dit billede ved hjælp af følgende kommando:
docker run -dit lampe: DockerfileNår beholderen er startet, skal du se følgende output:
0d2beb7dba01bb763768b116f734ae68286cee00d2ae923b2b7241c39ad54208Du kan kontrollere den kørende container ved hjælp af følgende kommando:
docker psDu skal få følgende output:
CONTAINER ID BILLEDE KOMMANDO OPRET STATUS PORTS NAVNEc14794784eb2 lampe: Dockerfile "apachectl -D FOREGR ..." 2 minutter siden Op 2 minutter 0.0.0.0: 8080-> 8080 / tcp quirky_ramanujan
Konklusion
I denne vejledning lærte du, hvad der er Dockerfile, og hvordan man bygger et dockerbillede med Dockerfile. Dette er meget nyttigt til at oprette dine brugerdefinerede billeder i stedet for at foretage ændringer i et trukket billede.