Dockerfile je jednoduchý textový súbor, ktorý obsahuje všetky príkazy, ktoré by mohol používateľ vyvolať na príkazovom riadku na zostavenie alebo vytvorenie obrázka. Pomocou zostavy ukotviteľného panela môžete ľahko automatizovať zostavenie, ktoré postupne spúšťa viacero príkazov definovaných v súbore ukotviteľného panela.
Napríklad chcete stiahnuť obrázok ukotvenia z centra ukotvenia pre vaše konkrétne vývojové potreby. Potom chcete aktualizovať obraz, nainštalovať niekoľko balíkov pre váš vývojový proces. V tomto prípade môžete vytvoriť súbor dockerfile, zahrnúť všetky parametre pre vaše konkrétne potreby a vytvoriť svoj vlastný obrázok. Po vytvorení dockerfile ho môžete použiť znova a znova na vytvorenie rovnakého obrázka bez manuálnej inštalácie všetkých požadovaných balíkov pre váš vývojový proces.
Dockerfile Basic
Pred prácou s dockerfile je dôležité vedieť, ako vytvoriť dockerfile. Dockerfile obsahuje konkrétne kľúčové slová, pomocou ktorých je možné vytvoriť konkrétny obrázok. Stručné vysvetlenie všetkých kľúčových slov použitých v súbore docker je uvedené nižšie:
- ZO: Používa sa na definovanie základného obrazu, na ktorom budeme stavať.
- PRIDAŤ: Používa sa na pridávanie súborov do vytváraného kontajnera. Jednoducho povedané, RUN sa používa na vykonávanie príkazov a potvrdzuje výsledok
- BEH: Používa sa na pridávanie vrstiev k základnému obrázku inštaláciou komponentov.
- CMD: Používa sa na spustenie príkazov na začiatku kontajnera. Tieto príkazy sa spustia, iba ak počas spustenia kontajnera nie je zadaný žiadny argument.
- VSTUPNÝ BOD: Používa sa na spustenie príkazov počas procesu inicializácie kontajnera. Ak chcete po vytvorení obrázka automaticky spustiť kontajner, musíte vo svojom dockefile použiť ENTRYPOINT.
- ENV: Používa sa na definovanie premenných prostredia za behu kontajnera.
- EXPOZÍCIA: Používa sa na určenie portu počúvania, ktorý umožňuje sieťovanie za behu.
- MAINTAINER: Používa sa na zadanie mena a e-mailovej adresy tvorcu obrázka.
- UŽÍVATEĽ: Používa sa na zadanie používateľského mena použitého na spustenie kontajnera.
- OBJEM: Používa sa na povolenie prístupu z kontajnera do adresára na hostiteľovi Docker.
- WORKDIR: Používa sa na zadanie cesty príkazu, ktorý sa má vykonať za behu programu.
- ŠTÍTOK: Používa sa na pridanie štítkov k obrázku ukotvenia.
Vytváranie Dockerfile
V tejto časti vytvoríme dockerfile na vytvorenie obrazu servera LAMP zo základného obrazu Ubuntu.
Najskôr budete musieť vytvoriť adresár na uloženie súboru docker. Môžete ho vytvoriť pomocou nasledujúceho príkazu:
mkdir SVETLOĎalej vytvorte v adresári adresár s názvom Dockerfile:
nano LAMP / DockerfilePridajte nasledujúce riadky:
FROM ubuntu: najnovšieÚDRŽBÁR Hitesh Jethva
ENV DEBIAN_FRONTEND = neinteraktívne
RUN 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"]
EXPOZÍCIA 8080
Po dokončení súbor uložte a zatvorte.
Budovanie imidžu pomocou súboru Dockerfile
Po vytvorení súboru Dockerfile môžete pomocou súboru Dockerfile ľahko vytvoriť vlastný obrázok LAMP.
Najskôr zmeňte adresár na LAMP a spustením nasledujúceho príkazu vytvorte obraz z tohto súboru:
CD LAMPdocker build -t "lampa: Dockerfile".
Vyššie uvedený príkaz začne sťahovať najnovší obrázok Ubuntu z Docker Hubu a nainštalovaných potrebných balíkov uvedených v súbore Docker. Po úspešnom vytvorení obrázka by sa mal zobraziť nasledujúci výstup:
Zasielanie kontextu zostavenia do Docker daemon 2.048 kBKrok 1/6: Z ubuntu: najnovšie
najnovšie: Vytiahnutie z knižnice / ubuntu
54ee1f796a1e: Potiahnutie dokončené
f7bfea53ad12: Potiahnutie dokončené
46d371e02073: Potiahnutie dokončené
b66c17bbf772: Potiahnutie dokončené
Digest: sha256: 31dfb10d52ce76c5ca0aa19d10b3e6424b830729e32a89a7c6eee2cda2be67a5
Stav: Stiahnutý novší obrázok pre ubuntu: najnovší
---> 4e2eef94cd6b
Krok 2/6: MAINTAINER Hitesh Jethva
---> Spustené v 047977af2c2a
Demontáž medziľahlého kontajnera 047977af2c2a
---> 1331df625c4c
Krok 3/6: ENV DEBIAN_FRONTEND = neinteraktívny
---> Spustené v 3597152c7a1b
Demontáž medziľahlého kontajnera 3597152c7a1b
---> 86c82c95e75d
Krok 4/6: RUN apt-get update -y && apt-get nainštalovať apache2 mariadb-server
libapache2-mod-php php php-cli php-common php-mysql php-json php-curl -y
Odstraňuje sa medzikus 322532299fd9
---> f6897a9554f7
Krok 5/6: CMD ["apachectl", "- D", "FOREGROUND"]
---> Beží v 669635bc8bcb
Odstraňuje sa medzikus 669635bc8bcb
---> e8400eb2e677
Krok 6/6: EXPOZÍCIA 8080
---> Spustené v 937ae2b2d305
Odstraňuje sa medzikus 937ae2b2d305
---> 2123a857361d
Úspešne postavené 2123a857361d
Lampa bola úspešne označená: Dockerfile
Teraz môžete uviesť zoznam svojich novo vytvorených obrázkov spustením nasledujúceho príkazu:
ukotviteľné obrázkyMali by ste vidieť nasledujúci výstup:
IDENTIFIKÁCIA REPOSITÁRNEHO IDA VYTVORENÉ VEĽKOSTIlampa Dockerfile 2123a857361d pred 44 sekundami 520 MB
ubuntu najnovšie 4e2eef94cd6b pred 8 dňami 73.9 MB
Teraz máte v ruke vlastný obraz servera LAMP. Históriu každého príkazu môžete zobraziť aj pomocou nasledujúceho príkazu:
lampa histórie ukotvenia: súbor ukotveniaMali by ste vidieť nasledujúci výstup:
OBRÁZOK VYTVORENÝ PODMIENKOU VEĽKOSTI2123a857361d pred 16 minútami / bin / sh -c # (nop) EXPOSE 8080 0B
e8400eb2e677 pred 16 minútami / bin / sh -c # (nop) CMD ["apachectl" "-D" "FO… 0B
f6897a9554f7 pred 16 minútami / bin / sh -c apt-get aktualizácia -y && apt-get inst… 446 MB
86c82c95e75d pred 17 minútami / bin / sh -c # (nop) ENV DEBIAN_FRONTEND = mimo… 0B
1331df625c4c pred 17 minútami / bin / sh -c # (nop) MAINTAINER Hitesh Jethva 0B
4e2eef94cd6b pred 8 dňami / bin / sh -c # (nop) CMD ["/ bin / bash"] 0B
Vytvorenie kontajnera z obrázka LAMP
Teraz môžete spustiť kontajner z vášho obrázka pomocou nasledujúceho príkazu:
docker run -dit lampa: DockerfilePo spustení kontajnera by sa mal zobraziť nasledujúci výstup:
0d2beb7dba01bb763768b116f734ae68286cee00d2ae923b2b7241c39ad54208Spustený kontajner môžete overiť pomocou nasledujúceho príkazu:
docker psMali by ste dostať nasledujúci výstup:
ID KONTAJNERA OBRAZOVÝ PRÍKAZ VYTVORENÝ STAV NÁZVY STAVOVlampa c14794784eb2: Dockerfile "apachectl -D FOREGR ..." pred 2 minútami nahor o 2 minúty 0.0.0.0: 8080-> 8080 / tcp quirky_ramanujan
Záver
V tejto príručke ste sa naučili, čo je Dockerfile a ako vytvoriť obraz ukotvenia pomocou Dockerfile. To je veľmi užitočné pri vytváraní vlastných obrázkov namiesto vykonávania zmien na stiahnutom obrázku.