Dockerfile je preprosta besedilna datoteka, ki vsebuje vse ukaze, ki jih lahko uporabnik pokliče v ukazni vrstici za sestavljanje ali izdelavo slike. S pomočjo gradnje dockerja lahko enostavno avtomatizirate gradnjo, ki zažene zaporedoma več ukazov, definiranih v datoteki docker.
Na primer, želite prenesti sliko dockerja iz priklopnega središča za svoje posebne razvojne potrebe. Nato želite posodobiti sliko, namestiti nekaj paketov za svoj razvojni proces. V tem primeru lahko ustvarite datoteko docker, vključite vse parametre za svoje potrebe in ustvarite sliko po meri. Po ustvarjanju datoteke docker lahko znova in znova uporabite isto sliko, ne da bi ročno namestili vse potrebne pakete za svoj razvojni postopek.
Dockerfile Basic
Preden začnete delati z dockerfile, če je pomembno vedeti, kako narediti dockerfile. Dockerfile vključuje posebne ključne besede, ki jih je mogoče uporabiti za ustvarjanje določene slike. Spodaj so navedene kratke razlage vseh ključnih besed, uporabljenih v datoteki docker:
- OD: Uporablja se za določanje osnovne slike, na kateri bomo gradili.
- DODAJ: Uporablja se za dodajanje datotek v vsebnik, ki je zgrajen. Preprosto povedano, RUN se uporablja za izvajanje ukazov in zaveže rezultat
- TEK: Uporablja se za dodajanje plasti osnovni sliki z namestitvijo komponent.
- CMD: Uporablja se za zagon ukazov na začetku vsebnika. Ti ukazi se izvajajo samo, če med izvajanjem vsebnika ni naveden noben argument.
- VSTOPNA TOČKA: Uporablja se za izvajanje ukazov med postopkom inicializacije vsebnika. Če želite vsebnik samodejno zagnati po izdelavi slike, morate v dockfileu uporabiti ENTRYPOINT.
- ENV: Uporablja se za definiranje spremenljivk okolja v času izvajanja vsebnika.
- IZPOSTAVITEV: Uporablja se za določitev vrat za poslušanje, da se omogoči povezovanje v omrežje med izvajanjem.
- VZDRŽEVALEC: Uporablja se za določanje imena in e-poštnega ID-ja ustvarjalca slike.
- UPORABNIK: Uporablja se za določanje uporabniškega imena, ki se uporablja za zagon vsebnika.
- GLASNOST: Uporablja se za omogočanje dostopa iz vsebnika do imenika na gostitelju Docker.
- WORKDIR: Uporablja se za določitev poti ukaza, ki naj se izvede med izvajanjem.
- LABEL: Uporablja se za dodajanje nalepk na sliko priklopne postaje.
Ustvarjanje datoteke Docker
V tem razdelku bomo ustvarili datoteko docker za izdelavo slike strežnika LAMP iz osnovne slike Ubuntuja.
Najprej boste morali ustvariti imenik za shranjevanje datoteke docker. Ustvarite ga lahko z naslednjim ukazom:
mkdir SVETILKANato v imeniku ustvarite imenik z imenom Dockerfile:
nano LAMP / DockerfileDodajte naslednje vrstice:
IZ ubuntuja: najnovejšeVZDRŽEVALEC Hitesh Jethva
ENV DEBIAN_FRONTEND = neinteraktivno
ZAŽENI apt-get update -y && apt-get install apache2 mariadb-server
libapache2-mod-php php php-cli php-pogost php-mysql php-json php-curl -y
CMD ["apachectl", "- D", "NEZAPOSLENO"]
IZPOSTAVITE 8080
Ko končate, shranite in zaprite datoteko.
Ustvarjanje slike z Dockerfile
Po ustvarjanju datoteke Docker lahko s pomočjo datoteke Docker enostavno ustvarite sliko LAMP po meri.
Najprej spremenite imenik v LAMP in zaženite naslednji ukaz za izdelavo slike iz te datoteke:
cd LAMPdocker build -t "lamp: Dockerfile".
Zgornji ukaz bo začel prenašati najnovejšo sliko Ubuntuja iz Docker Hub in namestiti potrebne pakete, navedene v Dockerfile. Ko je slika uspešno zgrajena, boste videli naslednje rezultate:
Pošiljanje konteksta gradnje v Docker demon 2.048kBKorak 1/6: IZ ubuntuja: najnovejši
najnovejše: Vlečenje iz knjižnice / ubuntu
54ee1f796a1e: Povlecite končano
f7bfea53ad12: Povlecite končano
46d371e02073: Povlecite končano
b66c17bbf772: povleci dokončano
Izvleček: sha256: 31dfb10d52ce76c5ca0aa19d10b3e6424b830729e32a89a7c6eee2cda2be67a5
Stanje: Prenesena novejša slika za ubuntu: najnovejša
---> 4e2eef94cd6b
Korak 2/6: VZDRŽEVALEC Hitesh Jethva
---> Tek v 047977af2c2a
Odstranjevanje vmesne posode 047977af2c2a
---> 1331df625c4c
Korak 3/6: ENV DEBIAN_FRONTEND = neinteraktivno
---> Tek v 3597152c7a1b
Odstranjevanje vmesne posode 3597152c7a1b
---> 86c82c95e75d
Korak 4/6: ZAŽENI apt-get update -y && apt-get install apache2 mariadb-server
libapache2-mod-php php php-cli php-pogost php-mysql php-json php-curl -y
Odstranjevanje vmesne posode 322532299fd9
---> f6897a9554f7
Korak 5/6: CMD ["apachectl", "- D", "FOREGROUND"]
---> Tek v 669635bc8bcb
Odstranjevanje vmesne posode 669635bc8bcb
---> e8400eb2e677
Korak 6/6: IZPOSTAVITE 8080
---> Tek v 937ae2b2d305
Odstranitev vmesne posode 937ae2b2d305
---> 2123a857361d
Uspešno zgrajena 2123a857361d
Uspešno označena žarnica: Dockerfile
Zdaj lahko na novo navedete sliko, tako da zaženete naslednji ukaz:
slike dockerjaMorali bi videti naslednji izhod:
Ustvarjena velikost ID-ja slike repozitorne oznakežarnica Dockerfile 2123a857361d pred 44 sekundami 520MB
ubuntu najnovejši 4e2eef94cd6b pred 8 dnevi 73.9 MB
Zdaj imate v roki sliko strežnika LAMP po meri. Z naslednjim ukazom si lahko ogledate tudi zgodovino vsakega ukaza:
lučka zgodovine dockerja: DockerfileMorali bi videti naslednji izhod:
SLIKA Ustvarjena Ustvarjena po velikosti komentar2123a857361d pred 16 minutami / bin / sh -c # (nop) EXPOSE 8080 0B
e8400eb2e677 pred 16 minutami / bin / sh -c # (nop) CMD ["apachectl" "-D" "FO… 0B
f6897a9554f7 pred 16 minutami / bin / sh -c apt-get update -y && apt-get inst… 446MB
86c82c95e75d pred 17 minutami / bin / sh -c # (nop) ENV DEBIAN_FRONTEND = nonin… 0B
1331df625c4c pred 17 minutami / bin / sh -c # (nop) VZDRŽEVALEC Hitesh Jethva 0B
4e2eef94cd6b pred 8 dnevi / bin / sh -c # (nop) CMD ["/ bin / bash"] 0B
Ustvarjanje vsebnika iz slike LAMP
Zdaj lahko zaženete vsebnik s slike z naslednjim ukazom:
docker run -dit lamp: DockerfileKo se vsebnik zažene, boste videli naslednji izhod:
0d2beb7dba01bb763768b116f734ae68286cee00d2ae923b2b7241c39ad54208Izvedeni vsebnik lahko preverite z naslednjim ukazom:
docker psDobili bi naslednji izhod:
IME UKAZA ID KONTEJNERJA USTVARJENA STATUSNA PRISTANIŠČA IMENAc14794784eb2 svetilka: Dockerfile "apachectl -D FOREGR…" pred 2 minutama Gor 2 minuti 0.0.0.0: 8080-> 8080 / tcp quirky_ramanujan
Zaključek
V tem priročniku ste izvedeli, kaj je Dockerfile in kako z Dockerfile zgraditi sliko dockerja. To je zelo koristno za ustvarjanje slik po meri, namesto da bi se na izvlečeni sliki izvajale spremembe.