Dockerfile je jednostavna tekstualna datoteka koja sadrži sve naredbe koje bi korisnik mogao pozvati na naredbenom retku za sastavljanje ili izgradnju slike. Uz pomoć docker gradnje možete jednostavno automatizirati gradnju koja izvodi više naredbi definiranih u dockerfileu uzastopno.
Na primjer, želite preuzeti sliku dockera s čvorišta dockera za svoje specifične razvojne potrebe. Zatim želite ažurirati sliku, instalirati neke pakete za svoj razvojni proces. U tom slučaju možete stvoriti docker datoteku, uključiti sve parametre za svoje specifične potrebe i izgraditi svoju prilagođenu sliku. Nakon stvaranja docker datoteke, možete je koristiti više puta za izgradnju iste slike bez ručnog instaliranja svih potrebnih paketa za vaš razvojni proces.
Dockerfile Basic
Prije rada s dockerfileom, ako je važno znati kako napraviti dockerfile. Dockerfile uključuje određene ključne riječi koje se mogu koristiti za izgradnju određene slike. Kratko objašnjenje svih ključnih riječi koje se koriste u datoteci docker navedene su u nastavku:
- IZ: Koristi se za definiranje osnovne slike na kojoj ćemo graditi.
- DODATI: Koristi se za dodavanje datoteka u spremnik koji se gradi. Jednostavno rečeno, RUN se koristi za pokretanje naredbi i zapisivanje rezultata
- TRČANJE: Koristi se za dodavanje slojeva osnovnoj slici instaliranjem komponenata.
- CMD: Koristi se za pokretanje naredbi na početku spremnika. Te se naredbe izvode samo kada tijekom izvođenja spremnika nije naveden nijedan argument.
- ULAZNA TOČKA: Koristi se za pokretanje naredbi tijekom postupka inicijalizacije spremnika. Morate upotrijebiti ENTRYPOINT u svom dockefileu ako želite automatski pokrenuti spremnik nakon izgradnje slike.
- ENV: Koristi se za definiranje varijabli okoline u vremenu izvođenja spremnika.
- IZLOŽITI: Koristi se za određivanje porta za slušanje kako bi se omogućilo umrežavanje u vrijeme izvođenja.
- ODRŽAVAČ: Koristi se za određivanje imena i ID-a e-pošte tvorca slike.
- KORISNIK: Koristi se za specificiranje korisničkog imena koje se koristi za pokretanje spremnika.
- VOLUMEN: Koristi se za omogućavanje pristupa iz spremnika u direktorij na Docker hostu.
- WORKDIR: Koristi se za određivanje putanje naredbe koja će se izvršiti u vrijeme izvođenja.
- OZNAČITI: Koristi se za dodavanje naljepnica na sliku dockera.
Stvaranje datoteke Docker
U ovom ćemo odjeljku stvoriti docker datoteku za izgradnju slike LAMP poslužitelja od osnovne slike Ubuntua.
Prvo ćete trebati stvoriti direktorij za pohranu datoteke docker. Možete ga stvoriti sljedećom naredbom:
mkdir SVJETILJKAZatim stvorite direktorij pod nazivom Dockerfile unutar direktorija:
nano LAMPA / DockerfileDodajte sljedeće retke:
IZ ubuntu-a: najnovijeODRŽAVAČ Hitesh Jethva
ENV DEBIAN_FRONTEND = neinteraktivan
POKRENI apt-get update -y && apt-get install apache2 mariadb-server
libapache2-mod-php php php-cli php-uobičajeni php-mysql php-json php-curl -y
CMD ["apachectl", "- D", "NEGO"]
IZLOŽITE 8080
Spremite i zatvorite datoteku kada završite.
Izrada slike s Dockerfileom
Nakon stvaranja datoteke Docker, lako možete stvoriti prilagođenu LAMP sliku uz pomoć datoteke Docker.
Prvo promijenite direktorij u LAMP i pokrenite sljedeću naredbu za izgradnju slike iz te datoteke:
cd LAMPAdocker build -t "lampica: Dockerfile".
Gornja naredba započet će s preuzimanjem najnovije slike Ubuntua iz Docker Hub-a i instalirati potrebne pakete navedene u Dockerfileu. Nakon što je slika uspješno izgrađena, trebali biste vidjeti sljedeći izlaz:
Slanje konteksta gradnje u Docker demon 2.048kBKorak 1/6: IZ ubuntu-a: najnoviji
najnovije: Povlačenje iz knjižnice / ubuntu
54ee1f796a1e: Povucite dovršeno
f7bfea53ad12: Povlačenje završeno
46d371e02073: Povlačenje završeno
b66c17bbf772: Povuci dovršeno
Sažetak: sha256: 31dfb10d52ce76c5ca0aa19d10b3e6424b830729e32a89a7c6eee2cda2be67a5
Status: Preuzeta novija slika za ubuntu: najnovija
---> 4e2eef94cd6b
Korak 2/6: ODRŽAVAČ Hitesh Jethva
---> Trčanje u 047977af2c2a
Uklanjanje srednjeg spremnika 047977af2c2a
---> 1331df625c4c
Korak 3/6: ENV DEBIAN_FRONTEND = neinteraktivan
---> Trčanje u 3597152c7a1b
Uklanjanje međuspremnika 3597152c7a1b
---> 86c82c95e75d
Korak 4/6: POKRENI apt-get update -y && apt-get install apache2 mariadb-server
libapache2-mod-php php php-cli php-uobičajeni php-mysql php-json php-curl -y
Uklanjanje međuspremnika 322532299fd9
---> f6897a9554f7
Korak 5/6: CMD ["apachectl", "- D", "FOREGROUND"]
---> Trčanje u 669635bc8bcb
Uklanjanje srednjeg spremnika 669635bc8bcb
---> e8400eb2e677
Korak 6/6: IZLOŽITE 8080
---> Trčanje u 937ae2b2d305
Uklanjanje međuspremnika 937ae2b2d305
---> 2123a857361d
Uspješno izgrađena 2123a857361d
Uspješno označena svjetiljka: Dockerfile
Sada možete navesti novoizgrađenu sliku pokretanjem sljedeće naredbe:
dockerske slikeTrebali biste vidjeti sljedeći izlaz:
STVORENA VELIČINA ID-a SLIKE REPOZITORIJSKE TAGlampica Dockerfile 2123a857361d prije 44 sekunde 520MB
ubuntu najnovije 4e2eef94cd6b prije 8 dana 73.9 MB
Sada u svojoj ruci imate prilagođenu sliku LAMP poslužitelja. Povijest svake naredbe možete vidjeti i pomoću sljedeće naredbe:
lampica povijesti dockera: DockerfileTrebali biste vidjeti sljedeći izlaz:
SLIKA STVORENA STVORENA PO VELIČINI KOMENTAROM2123a857361d prije 16 minuta / bin / sh -c # (nop) EXPOSE 8080 0B
e8400eb2e677 prije 16 minuta / bin / sh -c # (nop) CMD ["apachectl" "-D" "FO… 0B
f6897a9554f7 prije 16 minuta / bin / sh -c apt-get update -y && apt-get inst… 446MB
86c82c95e75d prije 17 minuta / bin / sh -c # (nop) ENV DEBIAN_FRONTEND = nonin… 0B
1331df625c4c prije 17 minuta / bin / sh -c # (nop) ODRŽAVAČ Hitesh Jethva 0B
4e2eef94cd6b prije 8 dana / bin / sh -c # (nop) CMD ["/ bin / bash"] 0B
Stvaranje spremnika od LAMP slike
Sada možete pokrenuti spremnik sa slike pomoću sljedeće naredbe:
docker run -dit lampica: DockerfileNakon što je spremnik pokrenut, trebali biste vidjeti sljedeći izlaz:
0d2beb7dba01bb763768b116f734ae68286cee00d2ae923b2b7241c39ad54208Možete provjeriti pokrenut spremnik pomoću sljedeće naredbe:
docker psTrebali biste dobiti sljedeći izlaz:
ZAPOVIJED IDA SLIKE KONTEJNERA STVARANI STATUSI LUČKA IMENAc14794784eb2 lampica: Dockerfile "apachectl -D FOREGR…" prije 2 minute Gore 2 minute 0.0.0.0: 8080-> 8080 / tcp quirky_ramanujan
Zaključak
U ovom vodiču naučili ste što je Dockerfile i kako napraviti Docker sliku s Dockerfileom. Ovo je vrlo korisno za stvaranje vlastitih slika, umjesto da izvršavate promjene na povučenoj slici.