Učimo Docker, dio 6: rad s podacima

U današnjem dijelu prijevoda serije materijala o Dockeru razgovarat ćemo o radu s podacima. Konkretno o Docker volumenima. U ovim materijalima stalno smo uspoređivali softverske mehanizme Dockera s različitim jestivim analogijama. Nećemo se udaljiti od ove tradicije ni ovdje. Podaci u Dockeru mogu biti začini. U svijetu postoji mnogo vrsta začina, a u Dockeru mnogo načina za rad s podacima.

→ Dio 1: osnove
→ Dio 2: termini i koncepti
→ Dio 3: Dockerfile datoteke
→ Dio 4: smanjenje veličine slika i ubrzanje njihove izrade
→ Dio 5: komande
→ Dio 6: rad s podacima

Učimo Docker, dio 6: rad s podacima

Primijetite da je ovaj materijal pripremljen koristeći Docker engine verzije 18.09.1 i API verzije 1.39.

Podaci u Dockeru mogu se pohranjivati privremeno ili trajno. Počnimo s privremenim podacima.

Privremeno pohranjivanje podataka

U Docker kontejnerima rad s privremenim podacima može se organizirati na dva načina.

Zadano, datoteke koje kreira aplikacija koja radi unutar kontejnera pohranjuju se u sloju kontejnera koji podržava pisanje. Da bi ovaj mehanizam funkcionirao, ništa posebno nije potrebno postavljati. Dobiva se jeftino i efikasno. Aplikaciji je dovoljno samo pohraniti podatke i nastaviti s radom. Međutim, kada kontejner prestane postojati, nestaju i podaci pohranjeni na ovaj jednostavan način.

Za pohranu privremenih datoteka u Dockeru može se iskoristiti još jedno rješenje koje je prikladno kada je potrebna viša razina performansi u usporedbi s onom koja se može postići korištenjem standardnog mehanizma privremenog pohranjivanja podataka. Ako ne trebate da vaši podaci ostanu duže od postojanja kontejnera, možete povezati tmpfs s kontejnerom — privremeni skladišni prostor koji koristi RAM hosta. To će ubrzati izvođenje operacija pisanja i čitanja podataka.

Često se dogodi da je potrebno pohraniti podatke i nakon što kontejner prestane postojati. Za to će nam biti potrebni mehanizmi za trajnu pohranu podataka.

Trajno pohranjivanje podataka

Postoje dva načina za produženje životnog veka podataka izvan životnog veka kontejnera. Jedan od načina uključuje korišćenje bind mount tehnologije. Ovim pristupom, na kontejner se može mount-ovati, na primer, stvarna mapa. Podacima koji se nalaze u toj mapi mogu pristupiti i procesi izvan Dockera. Evo kako izgleda montiranje tmpfs i bind mount tehnologija.

Učimo Docker, dio 6: rad s podacima
Montiranje tmpfs i bind mount

Nedostaci korišćenja bind mount tehnologije su u tome što njenim korišćenjem otežava pravljenje rezervnih kopija podataka, migraciju podataka, i zajedničko korišćenje podataka među više kontejnera. Bolje je koristiti Docker volumene za trajno skladištenje podataka.

Docker volumeni

Volumen je datotečni sistem koji se nalazi na host mašini izvan kontejnera. Docker upravlja kreiranjem i upravljanjem volumenima. Evo glavnih osobina Docker volumena:

  • Oni su sredstvo za trajno skladištenje informacija.
  • Oni su samostalni i odvojeni od kontejnera.
  • Različiti kontejneri mogu zajednički koristiti.
  • Oni omogućavaju efikasno čitanje i pisanje podataka.
  • Volumene je moguće smestiti na resurse udaljenog cloud provajdera.
  • Mogu se šifrovati.
  • Mogu dobiti imena.
  • Kontejner može unapred napuniti volumen podacima.
  • Prikladni su za testiranje.

Kao što vidite, Docker volumeni imaju izvanredne osobine. Hajde da pričamo o tome kako ih kreirati.

Kreiranje volumena

Volumene možete kreirati pomoću Docker alata ili putem API poziva.

Evo uputstva u Dockerfile-u koje omogućava kreiranje volumena prilikom pokretanja kontejnera.

VOLUME /my_volume

Kada koristite ovakvu instrukciju u Docker-u, nakon kreiranja kontejnera, biće kreiran volumen koji sadrži podatke koji već postoje na datoj lokaciji. Obratite pažnju da vas kreiranje volumena pomoću Dockerfile-a ne oslobađa obaveze da navedete tačku montiranja volumena.

Volumene u Dockerfile-u možete kreirati i koristeći JSON format.

Pored toga, volumene možete kreirati putem komandne linije tokom rada kontejnera.

Rad sa volumenima iz komandne linije

▍Kreiranje volumena

Samostalan volumen možete kreirati sledećom komandom:

docker volume create --name my_volume

▍Provjera informacija o volumenima

Da biste pregledali popis Docker volumena, upotrijebite sljedeću naredbu:

docker volume ls

Istraživanje određenog volumena može se izvršiti na sljedeći način:

docker volume inspect my_volume

▍Brisanje volumena

Volumen se može obrisati na sljedeći način:

docker volume rm my_volume

Da biste obrisali sve volumene koji se ne koriste od kontejnera, možete koristiti ovu naredbu:

docker volume prune

Prije brisanja volumena, Docker će od vas zatražiti potvrdu za izvršenje ove operacije.

Ako je volumen povezan s bilo kojim kontejnerom, taj volumen se ne može obrisati dok se odgovarajući kontejner ne izbriše. Čak i ako je kontejner izbrisan, Docker to ne razumije uvijek. Ako se to dogodi, možete koristiti sljedeću naredbu:

docker system prune

Ona je namijenjena za čišćenje resursa Dockera. Nakon izvršenja ove naredbe, trebali biste imati mogućnost brisanja volumena čiji je status prethodno bio pogrešno određen.

Flagevi —mount i —volume

Za rad s volumena često ćete morati koristiti flageve prilikom pozivanja naredbe. dockerNa primjer, da biste stvorili volumen tijekom kreiranja kontejnera, možete upotrijebiti ovu konstrukciju:

docker container run --mount source=my_volume, target=\/container\/path\/for\/volume my_image

Davno, prije 2017. godine, bio je popularan flag --volume. Izvorno je ovaj flag (može se koristiti u skraćenom obliku, tada izgleda kao -v) korišten za samostalne kontejnere, dok je flag --mount bio u okruženju Docker Swarm. Međutim, počevši od Dockera 17.06, flag --mount može se koristiti u svim scenarijima.

Treba napomenuti da se korištenjem flageva --mount povećava količina dodatnih podataka koje je potrebno navesti u naredbi, no iz nekoliko razloga, bolje je koristiti taj flag umjesto --volume. Oznaka --mount -- to je jedini mehanizam koji omogućava rad s servisima ili navođenje parametara drajvera volumena. Osim toga, rad s ovim flagom je jednostavniji.

U postojećim primjerima naredbi usmjerenih na rad s podacima u Dockeru, možete pronaći mnogo primjera korištenja flageva -v. Pokušavajući prilagoditi te naredbe za sebe, imajte na umu da flagevi --mount i --volume koriste različite formate parametara. Dakle, ne možete jednostavno zamijeniti -v na --mount i dobiti radnu naredbu.

Glavna razlika između --mount i --volume je u tome što se pri korištenju flageva --volume svi parametri skupljaju zajedno, u jednom polju, dok se pri korištenju --mount parametri su odvojeni.

Pri radu s --mount parametri su prikazani kao parovi ključ-vrijednost, a to izgleda ovako key=value. Ovi parovi su odvojeni zarezima. Evo često korištenih parametara --mount:

  • type – vrsta montiranja. Vrijednost odgovarajućeg ključa može biti bind, volume ili tmpfs. Ovdje govorimo o volumenima, što znači da nas zanima vrijednost volume.
  • source – izvor montiranja. Za imenovane volumene ovo je naziv volumena. Za neimenovane volumene ovaj ključ nije naveden. Može se skratiti na src.
  • destination – putanju na koju se datoteka ili mapa montira unutar kontejnera. Ovaj ključ može se skratiti na dst ili cilj.
  • readonly – montira volumen koji je namijenjen samo za čitanje. Korištenje ovog ključa nije obavezno, vrijednost mu nije dodijeljena.

Evo primjera upotrebe --mount s brojnim parametrima:

docker run --mount type=volume,source=volume_name,destination=\/path\/in\/container,readonly my_image

Zaključci

Evo korisnih komandi koje možete koristiti pri radu s Docker volumenima:

  • docker volume create
  • docker volume ls
  • docker volume inspect
  • docker volume rm
  • docker volume prune

Evo popis često korištenih parametara za --mount, primjenjivih u naredbi oblika docker run --mount my_options my_image:

  • type=volume
  • source=volume_name
  • destination=\/path\/in\/container
  • readonly

Sada, kada smo završili ovu seriju materijala o Dockeru, vrijeme je da kažemo nekoliko riječi o tome kamo se dalje mogu kretati oni koji uče Docker. Evo veliki dobar članak o Dockeru. Evo knjiga o Dockeru (prilikom kupnje ove knjige, pokušajte nabaviti najnovije izdanje). Evo još jedna knjiga koja će odgovarati onima koji smatraju da je praksa najbolji način učenja tehnologija.

Dragi čitatelji! Koje biste materijale o Dockeru preporučili početnicima?

Učimo Docker, dio 6: rad s podacima

Izvor: habr.com

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster