Hamnarbetare

Hur Dockerfile fungerar?

Hur Dockerfile fungerar?
Du kan bara distribuera en enda container med hjälp av dockeravbildningen. Men om du behöver distribuera flera containrar (var och en för olika uppgifter) från samma bild, vad händer dock? Du kan lösa detta med hjälp av dockerfilen.

Dockerfile är en enkel textfil som innehåller alla kommandon som användaren kan ringa på kommandoraden för att montera eller bygga en bild. Med hjälp av docker build kan du enkelt automatisera build som kör flera kommandon definieras i dockerfilen i följd.

Till exempel vill du ladda ner docker-bilden från docker-navet för dina specifika utvecklingsbehov. Sedan vill du uppdatera bilden, installera några paket för din utvecklingsprocess. I det här fallet kan du skapa en dockerfil, inkludera alla parametrar för dina specifika behov och bygga din anpassade bild. När du har skapat en dockerfil kan du använda den om och om igen för att bygga samma bild utan att manuellt installera alla nödvändiga paket för din utvecklingsprocess.

Dockerfile Basic

Innan du arbetar med dockerfil, är det viktigt att veta hur man gör en dockerfil. Dockerfile innehåller specifika nyckelord som kan användas för att skapa en specifik bild. En kort förklaring av alla nyckelord som används i en dockerfil listas nedan:

Skapa Dockerfile

I det här avsnittet skapar vi en dockerfil för att bygga en LAMP-serveravbildning från Ubuntu-basavbildningen.

Först måste du skapa en katalog för att lagra dockerfilen. Du kan skapa det med följande kommando:

mkdir LAMPA

Skapa sedan en katalog med namnet Dockerfile i katalogen:

nano LAMP / Dockerfile

Lägg till följande rader:

FRÅN ubuntu: senaste
UNDERHÅLLARE Hitesh Jethva
ENV DEBIAN_FRONTEND = icke-interaktiv
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
CMD ["apachectl", "- D", "FOREGROUND"]
EXPONERA 8080

Spara och stäng filen när du är klar.

Byggnadsbild med Dockerfile

När du har skapat Dockerfile kan du enkelt skapa en anpassad LAMP-bild med hjälp av Dockerfile.

Ändra först katalogen till LAMP och kör följande kommando för att bygga bilden från den filen:

cd LAMPA
docker build -t "lampa: Dockerfile".

Ovanstående kommando börjar ladda ner den senaste Ubuntu-bilden från Docker Hub och installerade nödvändiga paket som anges i Dockerfile. När bilden har byggts framgångsrikt bör du se följande utdata:

Skickar byggkontext till Docker daemon 2.048 kB
Steg 1/6: FRÅN ubuntu: senaste
senaste: Hämtar från biblioteket / ubuntu
54ee1f796a1e: Dra komplett
f7bfea53ad12: Dra komplett
46d371e02073: Dra komplett
b66c17bbf772: Dra komplett
Sammanfattning: sha256: 31dfb10d52ce76c5ca0aa19d10b3e6424b830729e32a89a7c6eee2cda2be67a5
Status: Nedladdad nyare bild för ubuntu: senaste
---> 4e2eef94cd6b
Steg 2/6: UNDERHÅLLARE Hitesh Jethva
---> Kör 047977af2c2a
Demontering av mellanbehållare 047977af2c2a
---> 1331df625c4c
Steg 3/6: ENV DEBIAN_FRONTEND = icke-interaktiv
---> Kör i 3597152c7a1b
Demontering av mellanbehållare 3597152c7a1b
---> 86c82c95e75d
Steg 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
Avlägsnar mellanbehållare 322532299fd9
---> f6897a9554f7
Steg 5/6: CMD ["apachectl", "- D", "FOREGROUND"]
---> Kör 669635bc8bcb
Demontering av mellanbehållare 669635bc8bcb
---> e8400eb2e677
Steg 6/6: EXPONERA 8080
---> Körs i 937ae2b2d305
Avlägsnar mellanbehållare 937ae2b2d305
---> 2123a857361d
Framgångsrikt byggt 2123a857361d
Lyckad taggad lampa: Dockerfile

Du kan nu lista din nybyggda bild genom att köra följande kommando:

dockerbilder

Du bör se följande utdata:

FÖRVARINGSMÄRKE BILD-ID SKAPAD STORLEK
lampa Dockerfile 2123a857361d för 44 sekunder sedan 520MB
ubuntu senaste 4e2eef94cd6b för 8 dagar sedan 73.9 MB

Nu har du en anpassad LAMP-serveravbildning i din hand. Du kan också se historiken för varje kommando med följande kommando:

docker historik lampa: Dockerfile

Du bör se följande utdata:

BILD SKAPAD SKAPAD MED STORLEKSKOMMENTAR
2123a857361d för 16 minuter sedan / bin / sh -c # (nop) EXPOSE 8080 0B
e8400eb2e677 16 minuter sedan / bin / sh -c # (nop) CMD ["apachectl" "-D" "FO… 0B
f6897a9554f7 för 16 minuter sedan / bin / sh -c apt-get update -y && apt-get inst… 446MB
86c82c95e75d 17 minuter sedan / bin / sh -c # (nop) ENV DEBIAN_FRONTEND = nonin… 0B
1331df625c4c för 17 minuter sedan / bin / sh -c # (nej) UNDERHÅLLARE Hitesh Jethva 0B
4e2eef94cd6b 8 dagar sedan / bin / sh -c # (nop) CMD ["/ bin / bash"] 0B

Skapa en behållare från LAMP Image

Nu kan du köra en container från din bild med följande kommando:

docker run -dit lampa: Dockerfile

När behållaren har startats bör du se följande utdata:

0d2beb7dba01bb763768b116f734ae68286cee00d2ae923b2b7241c39ad54208

Du kan verifiera den körande behållaren med följande kommando:

docker ps

Du bör få följande utdata:

CONTAINER ID BILDKOMMANDO SKAPAD STATUS PORTS NAMN
c14794784eb2 lampa: Dockerfile "apachectl -D FOREGR ..." 2 minuter sedan Upp 2 minuter 0.0.0.0: 8080-> 8080 / tcp quirky_ramanujan

Slutsats

I den här guiden lärde du dig vad som är Dockerfile och hur man bygger en dockeravbildning med Dockerfile. Detta är mycket användbart för att skapa dina egna bilder istället för att göra ändringar i en bild.

Hur man använder GameConqueror Cheat Engine i Linux
Artikeln täcker en guide om hur du använder GameConqueror-fuskmotorn i Linux. Många användare som spelar spel på Windows använder ofta applikationen "...
Bästa spelkonsolemulatorer för Linux
Den här artikeln listar populära spelkonsolemuleringsprogram som finns tillgängliga för Linux. Emulation är ett mjukvarukompatibilitetsskikt som emule...
Bästa Linux Distros för spel 2021
Linux-operativsystemet har kommit långt från sitt ursprungliga, enkla, serverbaserade utseende. Detta operativsystem har förbättrats enormt de senaste...