Uvod
Docker volumeni podataka je važan koncept pri kontejnerizaciji vaših aplikacija. Poznavanje ovog koncepta ključno je za osiguravanje najboljeg iskustva vaše kontejnerizirane aplikacije, uz pouzdanu trajnost i upravljanje podacima. Međutim, iako je ovaj koncept važan, on je također zbunjujući i složen za mnoge programere. Važno je da programeri i DevOps stručnjaci razumiju kako postaviti Docker volumene podataka, razumiju njihovu ispravnu upotrebu, poznaju različite vrste volumena i znaju koju vrstu odabrati za svoju aplikaciju.
Ovaj vodič je usmjeren na objašnjavanje koncepta i upotrebe Docker volumena podataka. Nakon što završite ovaj vodič, ovladat ćete postavljanjem i radom s bilo kojom vrstom Docker volumena podataka.
Preduvjeti
Kako biste pratili ovaj vodič, morat ćete imati sljedeće stavke:
- Ubuntu instaliran. Pogledajte naš Kako postaviti svoj Ubuntu 18.04 poslužitelj vodič za brzu referencu.
- Ubuntu korisnik sa sudo privilegijama. Ovaj korak može biti kompliciran, posebno ako niste upoznati s Linuxom. Pročitajte Konfiguriranje Linux Sudoers datoteke za detaljan vodič.
- Docker instaliran na Ubuntuu. Kako biste instalirali Docker na svoj Ubuntu, možete pratiti naš Kako instalirati & upravljati Dockerom na Ubuntuu u javnom oblaku blog.
Iako se ovaj vodič fokusira na upravljanje Dockerom na Ubuntuu, docker naredbe su primjenjive na svim operacijskim sustavima s instaliranim Dockerom.
Razumijevanje rada Docker kontejnera
Da biste u potpunosti razumjeli Docker volumene podataka, morate znati kako Docker kontejneri rade. U ovom odjeljku nudimo pregled osnova za nove korisnike Dockera. Ako ste upoznati s načinom na koji Docker radi ili ste iskusni korisnik Dockera, možete preskočiti ovaj odjeljak i započeti s volumenima podataka.
Docker kontejneri omogućuju izvršavanje aplikacije na vrhu host operacijskog sustava instaliranjem Docker platforme. Budući da je Docker platforma instalirana na host operacijskom sustavu, stvara se apstrakcija između host računala i gostujuće aplikacije. Za razliku od virtualnog stroja, Docker kontejner dijeli svoju Linux jezgru s host operacijskim sustavom. Budući da Docker ne zahtijeva instalaciju dodatnog operacijskog sustava na host računalu, Docker aplikacije su lagane i dostupne na svim host računalima sve dok je Docker instaliran na tom host računalu.
Budući da nema dodatnog gostujućeg operacijskog sustava, Docker platforma dijeli resurse s host računalom. Pokretanje Docker aplikacije je brzo, ali složenost nastaje kada morate dijeliti resurse. Docker nema vlastitu memoriju ili pohranu za trajnost podataka. Ti resursi moraju dolaziti s host računala. Ljudi koji su navikli koristiti virtualne strojeve smatraju ovaj proces dijeljenja i upravljanja resursima teškim. Nedostatak odgovarajućeg znanja može dovesti do neočekivanih i neželjenih ishoda. Iako ovaj vodič pretpostavlja da ste upoznati s Docker ekosustavom, slobodno prođite kroz naš detaljni vodič Što je Docker? Pregled Docker ekosustava za brzo ponavljanje.
Trajno spremanje podataka pomoću Docker volumena podataka
Kada radite s Dockerom, ne možete stvoriti volumen izravno unutar njega. Stoga, za pohranu podataka moramo stvoriti Docker volumen kontejner s priloženim volumenom. Kako bismo povezali našu Docker aplikaciju s ovim kontejnerom volumena podataka, koristimo Docker’ovu --volume-from naredbu za dohvaćanje kontejnera i njegovo spajanje na našu aplikaciju.
Proći ćemo kroz proces korak po korak:
- Prvo, stvorite novi kontejner pod nazivom,
my-container pokretanjem donje naredbe:
1docker create -v /tmp --name my-container ubuntu
To će stvoriti novi kontejner u mapi /tmp . Možete promijeniti direktorij mape prema potrebi. - Sada kada je vaš kontejner podataka spreman, možete pisati u njega pokretanjem novog Ubuntu kontejnera s
--volume-from oznakom i zatim pokretanjem
bash. Sve što zapišemo u
tmp direktorij bit će spremljen na našem host računalu u
/tmp mapi:
1docker run -t -i --volumes-from my-container ubuntu /bin/bash
Opcija -t naredbenog retka poziva terminal iz unutrašnjosti spremnika. Opcija -i čini vezu interaktivnom. Na bash upitu za Ubuntu spremnik, stvorite datoteku u /tmp:
1echo "Some sample data" > /tmp/sample_file - Na kraju, izađite iz ovog basha pokretanjem naredbe
exit . Zatim pokrenite donju naredbu:
1docker run -t -i --volumes-from my-container ubuntu /bin/bash
Pronaći ćete svoju sample_file u ovom direktoriju. Nema ograničenja na broj volumena koje možete navesti. Možete dodati onoliko volumena koliko želite koristeći opciju --volumes-from . Također možete stvoriti onoliko spremnika s podatkovnim volumenima koliko želite.
Pristup podacima između hosta i Docker spremnika
Za čitatelje s iskustvom u virtualizaciji, ova je opcija slična opciji dijeljene mape u virtualnim strojevima. Ovdje, umjesto stvaranja data-only spremnika, pokrećemo našu Docker aplikaciju koristeći Docker sliku i nadjačavamo jedan od njezinih direktorija sadržajem direktorija na host sustavu.
Uobičajeni scenarij bio bi spremanje datoteka dnevnika na host računalo. To bi moglo biti potrebno kako bismo mogli analizirati te datoteke po potrebi bez ulaska u sam stroj. Za ovaj scenarij pretpostavimo da koristite Docker Nginx sliku i želite pohraniti njezine datoteke dnevnika na host računalo. Nginx Docker slika zapisuje dnevnike u direktorij /var/log/nginx , ali to je /var/log/nginx unutar Docker Nginx spremnika. Stoga ova lokacija nije dostupna host računalu.
Kako bismo postigli naš cilj, morali bismo stvoriti dijeljenu mapu za pohranu dnevnika između host računala i Docker Nginx slike. U nastavku ćemo ilustrirati ovaj proces u jednostavnom vodiču korak-po-korak:
- Prvo stvorite direktorij na svom host računalu u koji želite pohraniti dnevnike:
Zatim pokrenite svoj spremnik pokretanjem donje naredbe:1mkdir ~/my-nginxlogs
1docker run -d -v ~/my-nginxlogs:/var/log/nginx -p 5000:80 -i nginx
- Ova
run naredba prihvaća nekoliko argumenata, pa je raščlanimo kako bismo je bolje razumjeli:
- -p 5000:80: Postavlja prosljeđivanje portova. Nginx spremnik prema zadanim postavkama sluša na portu 80 , a to mapira port Nginx spremnika 80 na port 5000 na host sustavu.
- -d: Odvaja proces i pokreće ga u pozadini.
- -v ~/my-nginxlogs:/var/log/nginx: Povezujemo direktorij /var/log/nginx iz unutrašnjosti Nginx spremnika s direktorijem /my-nginxlogs na host računalu. To : dijeli putanju hosta od putanje spremnika. Putanja hosta uvijek dolazi prva.
Sada kada naš Nginx spremnik radi, najprije provjerite poslužuje li Nginx poslužitelj na portu našeg host računala 5000 tako da otvorite svoj web preglednik i pokrenete URL: http://localhost:5000. Nakon što se pojavi početna stranica, vaš Nginx poslužitelj je spreman i stvara dnevnike u svojoj mapi /var/log/nginx .
Ako otvorite mapu /my-nginxlogs na svom host računalu, ovdje ćete vidjeti datoteke dnevnika iz Docker Nginx spremnika. Ako napravite promjene u mapi /my-nginxlogs na host računalu dok Nginx spremnik radi, promjene će se odraziti i u mapi spremnika /var/log/nginx .
Zaključak
U ovom smo vodiču poduzeli sveobuhvatan pristup razumijevanju Docker podatkovnih volumena. Razmotrili smo stvaranje volumena za vašu aplikaciju, dijeljenje podataka između hosta i Docker spremnika, vrste podataka i trajno spremanje podataka. To će vam pomoći u trajnom spremanju podataka u vašim kontejneriziranim aplikacijama, kao i u upravljanju stanjem i konfiguracijom aplikacije.
Za daljnje učenje o Dockeru, pogledajte sljedeće vodiče s našeg bloga:
- Kako ugostiti repozitorij Docker slika i izgraditi Docker slike s GitLab samoupravljanom instancom na Ubuntu 20.04
- Izgradnja i implementacija Flask aplikacije s Dockerom na Ubuntu 20.04
- Postavljanje privatnog Docker registra na Ubuntu 18.04
- Kako dijeliti podatke između Docker spremnika i hosta
- Čišćenje Docker resursa – slike, spremnici i volumeni
Ugodan rad!
Komentari
Još nema komentara. Budite prvi.