Dockerfile ir vienkāršs teksta fails, kurā ir visas komandas, kuras lietotājs var izsaukt komandrindā, lai apkopotu vai izveidotu attēlu. Izmantojot docker build, jūs varat viegli automatizēt būvējumu, kas secīgi izpilda vairākas komandas, kuras dockerfailā definē.
Piemēram, jūs vēlaties lejupielādēt dokstacijas attēlu no dokstacijas centrmezgla savām īpašajām attīstības vajadzībām. Pēc tam vēlaties atjaunināt attēlu, instalējiet dažas paketes savam izstrādes procesam. Šajā gadījumā jūs varat izveidot dockerfile, iekļaut visus parametrus jūsu īpašajām vajadzībām un izveidot savu pielāgoto attēlu. Pēc dockerfile izveides jūs varat to atkal un atkal izmantot, lai izveidotu to pašu attēlu, manuāli neinstalējot visas nepieciešamās paketes savam izstrādes procesam.
Dockerfile Basic
Pirms darba ar dockerfile ir svarīgi zināt, kā izveidot dockerfile. Dockerfile ietver konkrētus atslēgvārdus, kurus var izmantot, lai izveidotu noteiktu attēlu. Zemāk ir īss visu dockerfailā izmantoto atslēgvārdu skaidrojums:
- NO: To izmanto, lai noteiktu bāzes attēlu, uz kura mēs veidosimies.
- PIEVIENOT: To izmanto, lai pievienotu failus būvējamam konteineram. Vienkārši sakot, RUN tiek izmantots komandu izpildei un rezultāta izpildei
- RUN: To izmanto slāņu pievienošanai bāzes attēlam, instalējot komponentus.
- CMD: To izmanto komandu izpildei konteinera sākumā. Šīs komandas darbojas tikai tad, ja konteinera palaišanas laikā nav norādīts arguments.
- IEEJAS PUNKTS: To izmanto komandu darbināšanai konteinera inicializācijas procesā. Dockefile jāizmanto ENTRYPOINT, ja vēlaties pēc attēla izveidošanas automātiski palaist konteineru.
- ENV: To izmanto, lai definētu vides mainīgos konteinera izpildes laikā.
- IEDARBĪBA: To lieto, lai norādītu klausīšanās portu, lai iespējotu tīkla izveidi izpildes laikā.
- UZTURĒTĀJS: To lieto, lai norādītu attēla veidotāja vārdu un e-pasta ID.
- LIETOTĀJS: To lieto, lai norādītu lietotājvārdu, kas izmantots konteinera darbināšanai.
- APJOMS: To izmanto, lai atļautu piekļuvi no konteinera direktorijai Docker resursdatorā.
- DARBA DIR: To lieto, lai norādītu izpildes laikā izpildāmās komandas ceļu.
- LABEL: To izmanto, lai pievienotu etiķetes dokstatora attēlam.
Dockerfile izveide
Šajā sadaļā mēs izveidosim dockerfile, lai izveidotu LAMP servera attēlu no Ubuntu bāzes attēla.
Pirmkārt, jums būs jāizveido direktorija, lai saglabātu dockerfile. To var izveidot ar šādu komandu:
mkdir LAMPPēc tam direktorijā izveidojiet direktoriju ar nosaukumu Dockerfile:
nano LAMP / DockerfilePievienojiet šādas rindas:
NO ubuntu: jaunākaisUZTURĒTĀJS Hitesh Jethva
ENV DEBIAN_FRONTEND = neinteraktīvs
Palaidiet 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"]
IEDARBĪBA 8080
Kad esat pabeidzis, saglabājiet un aizveriet failu.
Celtniecības attēls ar Dockerfile
Pēc Dockerfile izveides jūs varat viegli izveidot pielāgotu LAMP attēlu ar Dockerfile palīdzību.
Vispirms nomainiet direktoriju uz LAMP un izpildiet šādu komandu, lai izveidotu attēlu no šī faila:
cd LAMPdocker build -t "lampa: Dockerfile".
Iepriekš minētā komanda sāks lejupielādēt jaunāko Ubuntu attēlu no Docker Hub un instalēja nepieciešamās paketes, kas norādītas Dockerfile. Kad attēls ir veiksmīgi izveidots, jums vajadzētu redzēt šādu izvadi:
Veidošanas konteksta nosūtīšana Docker 2. dēmonam.048 kB1/6. Darbība: NO Ubuntu: jaunākais
jaunākais: Vilkšana no bibliotēkas / ubuntu
54ee1f796a1e: Pavelciet pilnībā
f7bfea53ad12: Pavelciet pilnībā
46d371e02073: Pavelciet pilnībā
b66c17bbf772: Pavelciet pilnībā
Digest: sha256: 31dfb10d52ce76c5ca0aa19d10b3e6424b830729e32a89a7c6eee2cda2be67a5
Statuss: Lejupielādēts jaunāks attēls Ubuntu: jaunākais
---> 4e2eef94cd6b
2./6. Darbība: UZTURĒTĀJS Hitesh Jethva
---> Darbojas 047977af2c2a
Starptvertnes 047977af2c2a noņemšana
---> 1331df625c4c
3./6. Darbība: ENV DEBIAN_FRONTEND = neinteraktīvs
---> Darbojas 3597152c7a1b
Starptvertnes 3597152c7a1b noņemšana
---> 86c82c95e75d
4./6. Darbība: Palaidiet 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
Starppatvertnes noņemšana 322532299fd9
---> f6897a9554f7
5./6. Darbība: CMD ["apachectl", "- D", "FOREGROUND"]
---> Darbojas 669635bc8bcb
Starptvertnes 669635bc8bcb noņemšana
---> e8400eb2e677
6./6. Darbība: IEDARBĪBA 8080
---> Darbojas 937ae2b2d305
Starppatvertnes 937ae2b2d305 noņemšana
---> 2123a857361d
Veiksmīgi uzbūvēts 2123a857361d
Veiksmīgi atzīmēta lampa: Dockerfile
Tagad jūs varat uzskaitīt savu nesen izveidoto attēlu, izpildot šādu komandu:
dokeru attēliJums vajadzētu redzēt šādu izvadi:
REZERVES TAGA ATTĒLA ID IZVEIDOTS IZMĒRSlampa Dockerfile 2123a857361d pirms 44 sekundēm 520MB
ubuntu latest 4e2eef94cd6b pirms 8 dienām 73.9 MB
Tagad jūsu rokā ir pielāgots LAMP servera attēls. Varat arī skatīt katras komandas vēsturi ar šādu komandu:
docker vēstures lampa: DockerfileJums vajadzētu redzēt šādu izvadi:
IZVEIDOTS ATTĒLS, KURU RADA PĒC IZMĒRA KOMENTĀRI2123a857361d pirms 16 minūtēm / bin / sh -c # (nop) EXPOSE 8080 0B
e8400eb2e677 pirms 16 minūtēm / bin / sh -c # (nop) CMD ["apachectl" "-D" "FO… 0B
f6897a9554f7 pirms 16 minūtēm / bin / sh -c apt-get update -y && apt-get inst… 446 MB
86c82c95e75d pirms 17 minūtēm / bin / sh -c # (nop) ENV DEBIAN_FRONTEND = nonin… 0B
1331df625c4c pirms 17 minūtēm / bin / sh -c # (nop) MAINTAINER Hitesh Jethva 0B
4e2eef94cd6b pirms 8 dienām / bin / sh -c # (nop) CMD ["/ bin / bash"] 0B
Konteinera izveide no LAMP attēla
Tagad jūs varat palaist konteineru no sava attēla, izmantojot šādu komandu:
docker run -dit lampa: DockerfileKad konteiners ir palaists, jums vajadzētu redzēt šādu izvadi:
0d2beb7dba01bb763768b116f734ae68286cee00d2ae923b2b7241c39ad54208Darbojošo konteineru varat pārbaudīt, izmantojot šādu komandu:
dokers psJums vajadzētu iegūt šādu izvadi:
KONTEINERA ID ATTĒLU KOMANDAS VEIDOTI STATUSA OSTU NOSAUKUMIc14794784eb2 lampiņa: Dockerfile "apachectl-D FOREGR ..." pirms 2 minūtēm uz augšu 2 minūtes 0.0.0.0: 8080-> 8080 / tcp quirky_ramanujan
Secinājums
Šajā ceļvedī jūs uzzinājāt, kas ir Dockerfile un kā izveidot Dockerfile ar Dockerfile. Tas ir ļoti noderīgi, lai izveidotu pielāgotus attēlus, nevis veiktu izmaiņas izvilktajā attēlā.