Slijede razlike između dviju inačica stranice.
Starije izmjene na obje strane Starija izmjena Novija izmjena | Starija izmjena | ||
racfor_wiki:virtualizacija:docker-kontejneri [2020/01/06 19:49] dsindicic [Sažetak] |
racfor_wiki:virtualizacija:docker-kontejneri [2024/12/05 12:24] (trenutno) |
||
---|---|---|---|
Redak 32: | Redak 32: | ||
'' | '' | ||
- | Gore je prikazan Docker file nginx-a koji se pokreće na operacijskom sustavu Fedora. Ključnom riječi **FROM** navodimo roditeljski image file koji će biti skinuti sa DockerHub-a ili iz našeg lokalnog repozitorija. Svaka linija u Docker datoteci je novi sloj i preporuka je da kod kreiranja Docker datoteka njihov broj bude što manji radi performansa. Ključna riječ **RUN** označava da će se pokretati određene naredbe u komadnoj ljusci. **EXPOSE** otvara određeni port prema Docker klijentu te zadnja komanda pokreće nginx proces. Ukoliko se nginx proces ugasi, samim time taj kontenjer prestaje sa svojim izvođenjem | + | Gore je prikazan Docker file nginx-a koji se pokreće na operacijskom sustavu Fedora. Ključnom riječi **FROM** navodimo roditeljski image file koji će biti skinuti sa DockerHub-a ili iz našeg lokalnog repozitorija. Svaka linija u Docker datoteci je novi sloj i preporuka je da kod kreiranja Docker datoteka njihov broj bude što manji radi performansa. Ključna riječ **RUN** označava da će se pokretati određene naredbe u komadnoj ljusci. **EXPOSE** otvara određeni port prema Docker klijentu te zadnja komanda pokreće nginx proces. Ukoliko se nginx proces ugasi, samim time taj kontenjer prestaje sa svojim izvođenjem. Pitanje je zašto on prestaje sa izvođenjem možemo odgovoriti vrlo jednostavno. Kontenjer je proces kao i svaki drugi kojem je zadano da izvršava neki proces. Kada se taj proces ugasi, OS automatski gasi i proces kontenjera. Razlika između kontenjera i ostalih procesa je da on ne vidi ostale podatke o svim ostalim procesima, a to je moguće zbog proširenja Linux kernela prije 15 godina. Također zahvaljujući Systemd-u i cgrupama moguće je dati pojedinom procesu određenu količinu memorije ili CPU, ali sa puno manje fleksibilnosti nego kod virtualnih računala. Proces kontenjer može skakti sa CPU-u na CPU-u dok virtualno računalo to ne može te u slučaju krive implementacije context switcha može doći do povrede izoliranosti. |
Redak 43: | Redak 42: | ||
===== Podaci unutar kontenjera ===== | ===== Podaci unutar kontenjera ===== | ||
- | Procesi | + | Proces |
- | Podaci unutar Docker-a | + | Kao prije navedeno, sve promjene sve zapisuju u novi sloj koji se dodaje na sliku, što znači da podaci nestaju kada se kontenjer ugasi. Sve promjene koje se zapisuju u novom sloju zahtjevaju poziv kernela i upravljačkog programa datotečnog sustava u pozadini te je zbog toga performansno sporije. Postoje načini na koji se podaci mogu zapisivati na datotečni sustav domačina. Jedan od njih je volume, koji su upravljani od strane Docker-a i on ne povečava veličinu kontenjera koji ga mount-a. Drugi se zove bind mounts. Oni imaju limitiranu funkcionalnost ukoliko ih usporedima sa volume-mima. Kada se radi pristup datotekama preko bind mounts-a onda se koristi njihova apsolutna putanja na domačinu (preslikavanje strukture datoteka). Prethodna dva načina se koriste kada se u kontenjere žele zapisivati perzistentni podaci te predstavljaju način dijeljenja podataka između kontenjera. |