Dockerfile is een eenvoudig tekstbestand dat alle opdrachten bevat die de gebruiker op de opdrachtregel kan aanroepen om een afbeelding samen te stellen of te bouwen. Met behulp van docker-build kunt u eenvoudig een build automatiseren die meerdere opdrachten achter elkaar in het docker-bestand definieert.
U wilt bijvoorbeeld de docker-image downloaden van de docker-hub voor uw specifieke ontwikkelingsbehoeften. Vervolgens wilt u de afbeelding bijwerken, enkele pakketten installeren voor uw ontwikkelingsproces. In dit geval kunt u een dockerbestand maken, alle parameters voor uw specifieke behoeften opnemen en uw aangepaste afbeelding maken. Nadat u een dockerbestand hebt gemaakt, kunt u het steeds opnieuw gebruiken om dezelfde afbeelding te bouwen zonder handmatig alle vereiste pakketten voor uw ontwikkelingsproces te installeren.
Dockerfile Basis
Voordat u met dockerfile gaat werken, is het belangrijk om te weten hoe u een dockerfile maakt. Dockerfile bevat specifieke trefwoorden die kunnen worden gebruikt om een specifieke afbeelding te bouwen. Hieronder vindt u een korte uitleg van alle trefwoorden die in een dockerfile worden gebruikt:
- VAN: Het wordt gebruikt om de basisafbeelding te definiëren, waarop we zullen voortbouwen.
- TOEVOEGEN: Het wordt gebruikt om bestanden toe te voegen aan de container die wordt gebouwd. In eenvoudige bewoordingen wordt RUN gebruikt om opdrachten uit te voeren en het resultaat vast te leggen
- RENNEN: Het wordt gebruikt om lagen aan de basisafbeelding toe te voegen door componenten te installeren.
- CMD: Het wordt gebruikt om opdrachten aan het begin van de container uit te voeren. Deze opdrachten worden alleen uitgevoerd als er geen argument is opgegeven tijdens het uitvoeren van de container.
- INGANGSPUNT: Het wordt gebruikt om opdrachten uit te voeren tijdens het initialisatieproces van de container. U moet een ENTRYPOINT in uw docke-bestand gebruiken als u een container automatisch wilt starten na het bouwen van een afbeelding.
- ENV: Het wordt gebruikt om omgevingsvariabelen te definiëren in de runtime van de container.
- EXPOSEER: Het wordt gebruikt om de luisterpoort te specificeren om netwerken tijdens runtime mogelijk te maken.
- ONDERHOUDER: Het wordt gebruikt om de naam en het e-mailadres van de maker van de afbeelding op te geven.
- GEBRUIKER: Het wordt gebruikt om de gebruikersnaam op te geven die wordt gebruikt om de container uit te voeren.
- VOLUME: Het wordt gebruikt om toegang van de container tot de map op de Docker-host toe te staan.
- WERKDIR: Het wordt gebruikt om het pad op te geven van de opdracht die tijdens runtime moet worden uitgevoerd.
- ETIKET: Het wordt gebruikt om labels toe te voegen aan de docker-afbeelding.
Het Docker-bestand maken
In deze sectie zullen we een dockerbestand maken om een LAMP-serverimage te bouwen van de Ubuntu-basisimage.
Eerst moet u een map maken om het dockerbestand op te slaan. Je kunt het maken met het volgende commando:
mkdir LAMPMaak vervolgens een map met de naam Dockerfile in de map:
nano LAMP/DockerfileVoeg de volgende regels toe:
VAN ubuntu:laatsteONDERHOUDER Hitesh Jethva
ENV DEBIAN_FRONTEND=niet-interactief
VOER apt-get update -y && apt-get install apache2 mariadb-server uit
libapache2-mod-php php php-cli php-common php-mysql php-json php-curl -y
CMD ["apachectl","-D","VOORGROND"]
BLOOT 8080
Sla het bestand op en sluit het wanneer u klaar bent.
Afbeelding bouwen met Dockerfile
Na het maken van het Dockerbestand, kunt u eenvoudig een aangepaste LAMP-afbeelding maken met behulp van het Dockerbestand.
Wijzig eerst de map in LAMP en voer de volgende opdracht uit om de afbeelding van dat bestand te bouwen:
cd LAMPdocker build -t "lamp: Dockerfile".
De bovenstaande opdracht begint met het downloaden van de nieuwste Ubuntu-afbeelding van de Docker Hub en installeert de benodigde pakketten die zijn gespecificeerd in het Dockerbestand. Nadat de afbeelding met succes is gebouwd, zou u de volgende uitvoer moeten zien:
Bouwcontext verzenden naar Docker-daemon 2.048kBStap 1/6: VAN ubuntu: laatste:
laatste: Pulling uit bibliotheek/ubuntu
54ee1f796a1e: Trekken voltooid
f7bfea53ad12: Trek voltooid
46d371e02073: Trekken voltooid
b66c17bbf772: Trekken voltooid
Samenvatting: sha256:31dfb10d52ce76c5ca0aa19d10b3e6424b830729e32a89a7c6eee2cda2be67a5
Status: nieuwere afbeelding gedownload voor ubuntu: laatste
---> 4e2eef94cd6b
Stap 2/6: ONDERHOUDER Hitesh Jethva
---> Inrijden 047977af2c2a
Tussenbak verwijderen 047977af2c2a
---> 1331df625c4c
Stap 3/6: ENV DEBIAN_FRONTEND=niet-interactief
---> Rennen in 3597152c7a1b
Tussenbak verwijderen 3597152c7a1b
---> 86c82c95e75d
Stap 4/6 : VOER apt-get update -y && apt-get install apache2 mariadb-server uit
libapache2-mod-php php php-cli php-common php-mysql php-json php-curl -y
Tussenbak verwijderen 322532299fd9
---> f6897a9554f7
Stap 5/6: CMD ["apachectl","-D","FOREGROUND"]
---> Hardlopen in 669635bc8bcb
Tussenbak verwijderen 669635bc8bcb
---> e8400eb2e677
Stap 6/6: BLOOT 8080
---> Hardlopen in 937ae2b2d305
Tussenbak verwijderen 937ae2b2d305
---> 2123a857361d
Met succes gebouwd 2123a857361d
Lamp gelabeld: Dockerfile
U kunt nu uw nieuw gebouwde afbeelding weergeven door de volgende opdracht uit te voeren:
docker-afbeeldingenU zou de volgende uitvoer moeten zien:
REPOSITORY TAG AFBEELDING ID GEMAAKT GROOTTElamp Dockerfile 2123a857361d 44 seconden geleden 520MB
ubuntu laatste 4e2eef94cd6b 8 dagen geleden 73.9 MB
Nu heb je een aangepaste LAMP-serverafbeelding in je hand. U kunt ook de geschiedenis van elke opdracht bekijken met de volgende opdracht:
docker-geschiedenislamp: DockerfileU zou de volgende uitvoer moeten zien:
AFBEELDING GEMAAKT GEMAAKT OP GROOTTE COMMENTAAR2123a857361d 16 minuten geleden /bin/sh -c #(nop) EXPOSE 8080 0B
e8400eb2e677 16 minuten geleden /bin/sh -c #(nop) CMD ["apachectl" "-D" "FO... 0B
f6897a9554f7 16 minuten geleden /bin/sh -c apt-get update -y && apt-get inst… 446MB
86c82c95e75d 17 minuten geleden /bin/sh -c #(nop) ENV DEBIAN_FRONTEND=nonin… 0B
1331df625c4c 17 minuten geleden /bin/sh -c #(nop) MAINTAINER Hitesh Jethva 0B
4e2eef94cd6b 8 dagen geleden /bin/sh -c #(nop) CMD ["/bin/bash"] 0B
Een container maken op basis van LAMP Image
Nu kunt u een container vanuit uw afbeelding uitvoeren met de volgende opdracht:
docker run -dit lamp:DockerfileNadat de container is gestart, zou u de volgende uitvoer moeten zien:
0d2beb7dba01bb763768b116f734ae68286cee00d2ae923b2b7241c39ad54208U kunt de actieve container verifiëren met de volgende opdracht:
havenarbeider psJe zou de volgende output moeten krijgen:
CONTAINER ID AFBEELDING COMMANDO GEMAAKT STATUS POORTEN NAMENc14794784eb2 lamp:Dockerfile "apachectl -D FOREGR… " 2 minuten geleden Omhoog 2 minuten 0.0.0.0:8080->8080/tcp quirky_ramanujan
Conclusie
In deze handleiding heb je geleerd wat Dockerfile is en hoe je een docker-image kunt bouwen met Dockerfile. Dit is erg handig voor het maken van uw aangepaste afbeeldingen in plaats van wijzigingen door te voeren in een getrokken afbeelding.