Diferența dintre dockerfile și docker-compose Să înțelegem pe scurt procesul de utilizare al docker, care este împărțit în construirea imaginii și pornirea containerului.
Construcția imaginii: adică, crearea unei imagini care să conțină mediul, codul programului etc. necesar pentru instalare și funcționare. Acest proces de creare se realizează folosind un fișier docker.
Pornirea containerului: Containerul este în cele din urmă rulat prin extragerea imaginii construite și pornirea serviciului printr-o serie de instrucțiuni de rulare (cum ar fi maparea porturilor, montarea datelor externe, variabile de mediu etc.). Pentru un singur container, aceasta poate fi rulată prin docker run.
Dacă implică rularea mai multor containere (cum ar fi orchestrarea serviciilor), poate fi implementată prin docker-compose, care poate rula cu ușurință mai multe containere ca serviciu (desigur, doar unul dintre ele) și oferă funcția de scalare (scalarea serviciilor).
Scurt rezumat:
1.dockerfile: construiește imaginea;
2. rulare docker: pornirea containerului;
3. docker-compose: Pornește serviciul;
Începe de la început. Dacă nu folosești docker, cum construiești wordpress? Găsește mai întâi un server, presupune că sistemul său de operare este Ubuntu și apoi urmează documentația pas cu pas pentru a scrie comanda și a scrie configurația, nu? Ce zici de folosirea docker? Doar găsește un server, indiferent de sistem de operare, atâta timp cât suportă docker, docker rulează Ubuntu, docker va prelua cea mai recentă imagine Ubuntu din sursa oficială, poți să te gândești la asta ca și cum ai deschis o mașină virtuală Ubuntu și apoi să o instalezi pas cu pas, exact ca mai sus.
Totuși, această instalare are un dezavantaj semnificativ: odată ce containerul este șters, nu se face nicio muncă. Desigur, poți folosi docker commit pentru a o salva ca imagine, astfel încât să poată fi reutilizată.
Dar imaginea este în general mare, iar dacă distribui doar imaginea, ceilalți nu vor ști ce conține imaginea ta, ceea ce nu este favorabil pentru partajare și reutilizare. O soluție intuitivă este să scrii un script care să înregistreze întregul proces de instalare, astfel încât atunci când îl instalezi din nou, să poți executa scriptul. Un Dockerfile este un astfel de script care documentează procesul de creare a unei imagini. Cu un Dockerfile, pur și simplu rulează build-ul docker. Poți crea o imagine, iar fișierul Dockerfile este un fișier text, care este foarte ușor de modificat.
Acum că ai o imagine WordPress, trebuie doar să rulezi docker pentru a porni WordPress.
Dacă este doar WordPress, este suficient. Dar de multe ori, sunt necesare mai multe imagini pentru a porni un serviciu, cum ar fi nginx, mysql, mail service etc. Mai frecvent, nginx, mysql și smtp sunt toate imagini, iar aceste imagini lucrează împreună pentru a servi un proiect. Docker-compose este soluția la această problemă. Informații despre ce imagini are nevoie proiectul tău, cum să configurezi fiecare imagine, ce volume să montezi și așa mai departe sunt incluse în docker-compose.yml. Pentru a începe un serviciu, trebuie doar să comporți docker-compose și să faci dockercompse stop/down pentru a-l opri
Pe scurt, un Dockerfile înregistrează procesul de construcție al unei singure imagini docker-compse.yml înregistrează procesul de construcție al unui proiect (de obicei mai multe imagini).
Ai spus că unele tutoriale folosesc dockerfile+docker-compose pentru că docker-compose.yml însăși nu are informații despre build-ul imaginii, iar dacă imaginea este extrasă din registrul docker, atunci dockerfile-ul nu este necesar; Dacă imaginea trebuie construită, atunci trebuie furnizat un fișier Docker.
docker-composeEste un container de orchestrare. De exemplu, ai o imagine php, o imagine mysql și o imagine nginx. Dacă nu există docker-compose, atunci de fiecare dată când pornești, trebuie să tastezi parametrii de pornire ai fiecărui container, variabilele de mediu, numele containerului, să specifici parametrii legăturii diferitelor containere și o serie de operații, ceea ce este destul de greoi. După ce folosești docker-composer, poți scrie aceste comenzi într-docker-composer.yml fișier simultan, iar de fiecare dată când pornești întregul mediu (inclusiv 3 containere), trebuie doar să tastezi o comandă docker-composer up.
dockerfileRolul este să construiești o imagine în oglindă de la zero. Acesta conține mediul, codul programului etc. necesar pentru instalare și funcționare. Acest proces de creare se realizează folosind un fișier docker. Dockerfile - Pregătit pentru comanda docker build de a crea o imagine independentă, care poate fi folosită și în docker-compose pentru build live docker-compose.yml - Un script pentru docker-compose care poate gestiona mai multe containere simultan, inclusiv relațiile dintre ele, fie pentru a construi cu o imagine oficială sau cu tine, diverse definiții ale porturilor de rețea, definiții ale spațiului de stocare etc |