Docker

Hoe Dockerfile werkt?

Hoe Dockerfile werkt?
U kunt slechts één container implementeren met behulp van de docker-image. Als u echter meerdere containers (elk voor verschillende taken) vanuit dezelfde afbeelding moet implementeren, wat gebeurt er dan?? U kunt dit oplossen met behulp van het dockerbestand.

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:

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 LAMP

Maak vervolgens een map met de naam Dockerfile in de map:

nano LAMP/Dockerfile

Voeg de volgende regels toe:

VAN ubuntu:laatste
ONDERHOUDER 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 LAMP
docker 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.048kB
Stap 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-afbeeldingen

U zou de volgende uitvoer moeten zien:

REPOSITORY TAG AFBEELDING ID GEMAAKT GROOTTE
lamp 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: Dockerfile

U zou de volgende uitvoer moeten zien:

AFBEELDING GEMAAKT GEMAAKT OP GROOTTE COMMENTAAR
2123a857361d 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:Dockerfile

Nadat de container is gestart, zou u de volgende uitvoer moeten zien:

0d2beb7dba01bb763768b116f734ae68286cee00d2ae923b2b7241c39ad54208

U kunt de actieve container verifiëren met de volgende opdracht:

havenarbeider ps

Je zou de volgende output moeten krijgen:

CONTAINER ID AFBEELDING COMMANDO GEMAAKT STATUS POORTEN NAMEN
c14794784eb2 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.

Shadow of the Tomb Raider voor Linux-zelfstudie
Shadow of the Tomb Raider is de twaalfde toevoeging aan de Tomb Raider-serie - een actie-avonturengame-franchise gemaakt door Eidos Montreal. De game ...
Hoe FPS te verhogen in Linux?
FPS staat voor Beelden per seconde. De taak van FPS is om de framesnelheid te meten bij het afspelen van video's of speluitvoeringen. In eenvoudige wo...
Top Oculus App Lab-games
Als je eigenaar bent van een Oculus-headset, moet je op de hoogte zijn van sideloading. Sideloading is het proces van het installeren van niet-winkeli...