„Dockerfile“ yra paprastas tekstinis failas, kuriame yra visos komandos, kurias vartotojas gali iškviesti komandinėje eilutėje, norėdamas surinkti ar sukurti vaizdą. Naudodamiesi „Docker“ komponavimo versija, galite lengvai automatizuoti kūrimą, kuris paleidžia kelias komandas, apibrėžtas „Docker“ faile iš eilės.
Pvz., Norėdami atsisiųsti docker vaizdą iš docker hub, atsižvelgdami į savo specifinius plėtros poreikius. Tada norite atnaujinti vaizdą, įdiekite keletą paketų savo kūrimo procesui. Tokiu atveju galite sukurti „dockerfile“, įtraukti visus parametrus pagal savo specifinius poreikius ir sukurti pasirinktinį vaizdą. Sukūrę „dockerfile“, galite jį naudoti dar kartą, kad sukurtumėte tą patį vaizdą rankiniu būdu neįdiegdami visų reikiamų paketų, skirtų jūsų kūrimo procesui.
„Dockerfile Basic“
Prieš dirbant su „dockerfile“, svarbu žinoti, kaip sukurti „dockerfile“. „Dockerfile“ yra konkretūs raktiniai žodžiai, kuriuos galima naudoti kuriant konkretų vaizdą. Toliau pateikiamas trumpas visų „dockerfile“ naudojamų raktinių žodžių paaiškinimas:
- NUO: Jis naudojamas apibrėžti pagrindinį vaizdą, kurį mes sukursime.
- PAPILDYTI: Jis naudojamas failams pridėti prie statomo konteinerio. Paprasčiau tariant, RUN naudojamas komandoms vykdyti ir rezultatui vykdyti
- Paleisti: Jis naudojamas sluoksniams pridėti prie pagrindinio vaizdo, įdiegiant komponentus.
- CMD: Jis naudojamas komandoms vykdyti konteinerio pradžioje. Šios komandos vykdomos tik tada, kai vykdant sudėtinį rodinį nenurodytas argumentas.
- ĮEJIMAS: Jis naudojamas komandoms vykdyti per konteinerio inicializavimo procesą. Jei norite sukurti sudėtinį rodinį automatiškai sukūrę vaizdą, doko faile turite naudoti „ENTRYPOINT“.
- ENV: Jis naudojamas apibrėžti aplinkos kintamuosius konteinerio vykdymo metu.
- POVEIKIS: Jis naudojamas klausymosi prievadui nurodyti, kad būtų galima įjungti tinklą vykdymo metu.
- PRIEŽIŪRA: Jis naudojamas nurodyti vaizdo kūrėjo vardą ir el. Pašto adresą.
- VARTOTOJAS: Jis naudojamas nurodant naudotojo vardą, naudojamą konteineriui paleisti.
- TŪRIS: Jis naudojamas norint leisti iš konteinerio pasiekti „Docker“ pagrindinio kompiuterio katalogą.
- DARBAS: Jis naudojamas nurodant komandos kelią, kurį reikia vykdyti vykdymo metu.
- LABEL: Jis naudojamas pridedant etiketes prie doko atvaizdo.
„Dockerfile“ kūrimas
Šiame skyriuje sukursime „dockerfile“, kad sukurtume LAMP serverio vaizdą iš „Ubuntu“ pagrindinio vaizdo.
Pirmiausia turėsite sukurti katalogą, kuriame saugotumėte „docker“ failą. Jį galite sukurti naudodami šią komandą:
mkdir LAMPTada kataloge sukurkite katalogą „Dockerfile“:
nano LAMP / DockerfilePridėkite šias eilutes:
IŠ „ubuntu“: naujausiasPRIEŽIŪROS Hitesh Jethva
ENV DEBIAN_FRONTEND = neinteraktyvus
Paleiskite 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"]
POVEIKIS 8080
Baigę išsaugokite ir uždarykite failą.
Pastato vaizdas su „Dockerfile“
Sukūrę „Dockerfile“, naudodami „Dockerfile“, galite lengvai sukurti pasirinktinį LAMP vaizdą.
Pirmiausia pakeiskite katalogą į LAMP ir paleiskite šią komandą, kad sukurtumėte vaizdą iš šio failo:
CD ŠVIESAdocker build -t "lempa: Dockerfile".
Pirmiau nurodyta komanda pradės atsisiųsti naujausią „Ubuntu“ vaizdą iš „Docker Hub“ ir įdiegė būtinus „Dockerfile“ nurodytus paketus. Kai vaizdas bus sėkmingai sukurtas, turėtumėte pamatyti šį išvestį:
Siuntimo versijos kontekstas siunčiamas „Docker“ deemonui 2.048 kt1/6 žingsnis: IŠ „ubuntu“: naujausias
naujausias: traukimas iš bibliotekos / „ubuntu“
54ee1f796a1e: Patraukite
f7bfea53ad12: ištraukite
46d371e02073: Patraukite
b66c17bbf772: ištraukite
Santrauka: sha256: 31dfb10d52ce76c5ca0aa19d10b3e6424b830729e32a89a7c6eee2cda2be67a5
Būsena: atsisiųstas naujesnis „ubuntu“: naujausias vaizdas
---> 4e2eef94cd6b
2/6 žingsnis: PRIEŽIŪROS Hiteshas Jethva
---> Veikia 047977af2c2a
Tarpinio konteinerio 047977af2c2a pašalinimas
---> 1331df625c4c
3/6 žingsnis: ENV DEBIAN_FRONTEND = neinteraktyvus
---> Veikia 3597152c7a1b
Tarpinio konteinerio 3597152c7a1b nuėmimas
---> 86c82c95e75d
4/6 žingsnis: Paleiskite 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
Tarpinio konteinerio nuėmimas 322532299fd9
---> f6897a9554f7
5/6 žingsnis: CMD ["apachectl", "- D", "FOREGROUND"]
---> Veikia 669635bc8bcb
Tarpinio konteinerio 669635bc8bcb nuėmimas
---> e8400eb2e677
6/6 žingsnis: POVEIKIS 8080
---> Veikia 937ae2b2d305
Tarpinio konteinerio 937ae2b2d305 nuėmimas
---> 2123a857361d
Sėkmingai pastatytas 2123a857361d
Sėkmingai pažymėta lempa: „Dockerfile“
Dabar galite išvardyti naujai sukurtą vaizdą vykdydami šią komandą:
dokininkų vaizdaiTurėtumėte pamatyti šį išvestį:
SAUGOTOJO ŽYMOS VAIZDO ID SUKURTAS DYDISlempa Dockerfile 2123a857361d prieš 44 sekundes 520MB
„ubuntu“ naujausias 4e2eef94cd6b prieš 8 dienas 73.9 MB
Dabar rankoje turite pasirinktinį LAMP serverio vaizdą. Taip pat galite pamatyti kiekvienos komandos istoriją naudodami šią komandą:
doko istorijos lempa: „Dockerfile“Turėtumėte pamatyti šį išvestį:
SUKURTAS VAIZDAS, SUKURTAS DYDŽIO KOMENTARU2123a857361d prieš 16 min. / Bin / sh -c # (nop) POVEIKIS 8080 0B
e8400eb2e677 prieš 16 minučių / bin / sh -c # (nop) CMD ["apachectl" "-D" "FO… 0B
f6897a9554f7 prieš 16 minučių / bin / sh -c apt-get update -y && apt-get inst… 446 MB
86c82c95e75d prieš 17 minučių / bin / sh -c # (nop) ENV DEBIAN_FRONTEND = nonin ... 0B
1331df625c4c prieš 17 min. / Bin / sh -c # (nop) PRIEŽIŪROS „Hitesh Jethva 0B“
4e2eef94cd6b prieš 8 dienų / bin / sh -c # (nop) CMD ["/ bin / bash"] 0B
Konteinerio kūrimas iš LAMP Image
Dabar galite paleisti konteinerį iš savo vaizdo naudodami šią komandą:
docker run -dit lempa: DockerfilePaleidus sudėtinį rodinį, turėtumėte pamatyti šį išvestį:
0d2beb7dba01bb763768b116f734ae68286cee00d2ae923b2b7241c39ad54208Galite patikrinti veikiantį sudėtinį rodinį naudodami šią komandą:
dokininkas psTurėtumėte gauti šią išvestį:
KONTEINERIO ID VAIZDO KOMANDA SUKURTA STATUSO UOSTŲ PAVADINIMAIc14794784eb2 lempa: „Dockerfile“ „apachectl-D FOREGR…“ prieš 2 minutes Iki 2 minučių 0.0.0.0: 8080-> 8080 / tcp quirky_ramanujan
Išvada
Šiame vadove sužinojote, kas yra „Dockerfile“ ir kaip sukurti „Docker“ vaizdą naudojant „Dockerfile“. Tai labai naudinga kuriant pasirinktinius vaizdus, o ne daryti ištraukto vaizdo pakeitimus.