Učenje Dockera, 6. dio: Rad s podacima

U današnjem dijelu prijevoda serije materijala o Dockeru govorit ćemo o radu s podacima. Konkretno, o Docker volumenima. U ovim materijalima stalno smo uspoređivali mehanizme programiranja Dockera s raznim jestivim analogijama. Ovdje nećemo odstupiti od te tradicije. Neka podaci u Dockeru budu začini. Na svijetu postoji mnogo začina, a Docker ima mnogo načina za rad s podacima.

1. dio: Osnove
2. dio: termini i pojmovi
Dio 3: Docker datoteke
Dio 4: Smanjenje veličine slika i ubrzavanje njihovog sklapanja
5. dio: naredbe
6. dio: rad s podacima

Učenje Dockera, 6. dio: Rad s podacima

Imajte na umu da je ovaj materijal pripremljen pomoću verzije 18.09.1 ​​Docker motora i API verzije 1.39.

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

Privremena pohrana podataka

Postoje dva načina za upravljanje privremenim podacima u Docker spremnicima.

Prema zadanim postavkama, datoteke koje je stvorila aplikacija pokrenuta u spremniku pohranjuju se u sloj spremnika za pisanje. Da bi ovaj mehanizam radio, ne treba ništa posebno konfigurirati. Ispada jeftino i veselo. Aplikacija jednostavno treba spremiti podatke i nastaviti raditi svoje. No, nakon što spremnik prestane postojati, nestat će i podaci spremljeni na tako jednostavan način.

Privremena pohrana datoteka u Dockeru još je jedno rješenje koje je prikladno za slučajeve kada vam je potrebna viša razina performansi od onoga što je moguće postići korištenjem standardnog mehanizma za privremenu pohranu podataka. Ako ne želite da se vaši podaci pohranjuju dulje nego što spremnik postoji, možete se spojiti na spremnik tmpfs - privremenu pohranu informacija koja koristi RAM hosta. To će ubrzati izvršavanje operacija pisanja i čitanja podataka.

Često se događa da podatke treba pohraniti i nakon što spremnik prestane postojati. Da bismo to učinili, potrebni su nam trajni mehanizmi za pohranu podataka.

Trajna pohrana podataka

Postoje dva načina da životni vijek podataka bude dulji od životnog vijeka spremnika. Jedan od načina je korištenje tehnologije povezivanja. Ovim pristupom možete montirati, na primjer, mapu iz stvarnog života u spremnik. Procesi izvan Dockera također će moći raditi s podacima pohranjenima u takvoj mapi. Tako izgled tmpfs mount i bind mount tehnologija.

Učenje Dockera, 6. dio: Rad s podacima
Montiranje tmpfs i bind mount

Nedostaci korištenja tehnologije vezanja mount su da njezina upotreba komplicira sigurnosno kopiranje podataka, migraciju podataka, dijeljenje podataka između nekoliko spremnika. Mnogo je bolje koristiti Docker volumene za trajnu pohranu podataka.

Doker za sveske

Volumen je datotečni sustav koji se nalazi na glavnom računalu izvan spremnika. Sveske stvara i njima upravlja Docker. Ovo su glavna svojstva Docker volumena:

  • Oni su sredstvo za trajno pohranjivanje informacija.
  • Samostalni su i odvojeni od kontejnera.
  • Mogu se dijeliti između različitih spremnika.
  • Omogućuju vam organiziranje učinkovitog čitanja i pisanja podataka.
  • Svesci se mogu smjestiti na resurse udaljenog pružatelja usluga oblaka.
  • Mogu se šifrirati.
  • Mogu im se dati imena.
  • Spremnik može organizirati prethodno punjenje volumena podacima.
  • Pogodni su za testiranje.

Kao što vidite, Dockerovi volumeni imaju nevjerojatna svojstva. Razgovarajmo o tome kako ih stvoriti.

Stvaranje svezaka

Volume se mogu izraditi pomoću Docker ili API zahtjeva.

Evo uputa u Dockerfileu koje vam omogućuju stvaranje volumena prilikom pokretanja spremnika.

VOLUME /my_volume

Kada koristite sličnu uputu, Docker će nakon izrade spremnika stvoriti volumen koji sadrži podatke koji već postoje na navedenoj lokaciji. Imajte na umu da ako stvorite volumen koristeći Dockerfile, to vas ne oslobađa potrebe da navedete točku montiranja volumena.

Također možete stvoriti volumene u Dockerfileu koristeći JSON format.

Osim toga, volumeni se mogu kreirati pomoću alata naredbenog retka dok spremnik radi.

Rad s volumenima iz naredbenog retka

▍Stvaranje volumena

Možete stvoriti samostalni volumen pomoću sljedeće naredbe:

docker volume create —-name my_volume

▍ Saznajte informacije o količinama

Za prikaz popisa Docker volumena upotrijebite sljedeću naredbu:

docker volume ls

Određeni volumen možete istražiti ovako:

docker volume inspect my_volume

▍Brisanje sveska

Svezak možete izbrisati ovako:

docker volume rm my_volume

Kako biste uklonili sve volumene koje ne koriste spremnici, možete pribjeći sljedećoj naredbi:

docker volume prune

Prije brisanja volumena, Docker će od vas tražiti da potvrdite ovu operaciju.

Ako je volumen povezan sa spremnikom, taj se volumen ne može izbrisati dok se ne izbriše odgovarajući spremnik. U isto vrijeme, čak i ako se spremnik ukloni, Docker to ne razumije uvijek. Ako se to dogodi, možete koristiti sljedeću naredbu:

docker system prune

Osmišljen je za čišćenje Docker resursa. Nakon izvršavanja ove naredbe, trebali biste moći brisati volumene čiji je status prethodno bio pogrešan.

Oznake --mount i --volume

Za rad s volumenima, kada pozovete naredbu docker, često ćete morati koristiti zastavice. Na primjer, za stvaranje volumena tijekom stvaranja spremnika, možete koristiti ovu konstrukciju:

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

U davna vremena (do 2017.) zastava je bila popularna --volume. U početku, ova zastava (može se koristiti i u skraćenom obliku, tada izgleda -v) korišten je za samostalne spremnike, a zastava --mount - u okruženju Docker Swarm. Međutim, od Dockera 17.06, zastava --mount može se koristiti u bilo kojem scenariju.

Treba napomenuti da se pri korištenju zastave --mount povećava se količina dodatnih podataka koji se moraju navesti u naredbi, ali je iz nekoliko razloga bolje koristiti ovu oznaku, a ne --volume. Zastava --mount je jedini mehanizam koji vam omogućuje rad s uslugama ili određivanje opcija upravljačkog programa volumena. Također, s ovom je zastavom lakše raditi.

U postojećim primjerima Dockerovih naredbi za manipulaciju podacima možete vidjeti mnogo primjera korištenja zastavice -v. Kada pokušavate prilagoditi ove naredbe za sebe, imajte na umu da zastavice --mount и --volume koristiti različite formate parametara. Odnosno, ne možete jednostavno zamijeniti -v na --mount i dobiti radni tim.

Glavna razlika između --mount и --volume je da pri korištenju zastave --volume svi parametri skupljaju se zajedno u jedno polje, a prilikom korištenja --mount parametri su odvojeni.

Prilikom rada s --mount parametri su predstavljeni kao parovi ključ-vrijednost, naime, izgleda ovako key=value. Ovi parovi su odvojeni zarezima. Ovdje su najčešće korištene opcije --mount:

  • type — tip nosača. Vrijednost za odgovarajući ključ može biti vezati, volumen ili tmpfs. Ovdje govorimo o volumenima, odnosno zanima nas vrijednost volume.
  • source - montirati izvor. Za imenovane volumene, ovo je naziv volumena. Za neimenovane volumene ovaj ključ nije naveden. Može se skratiti na src.
  • destination - staza na koju je datoteka ili mapa montirana u spremniku. Ovaj ključ se može skratiti na dst ili target.
  • readonly - montira volumen koji je namijenjen samo za čitanje. Korištenje ovog ključa nije obavezno i ​​nije mu dodijeljena nikakva vrijednost.

Evo primjera korištenja --mount s mnogo opcija:

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

Rezultati

Evo nekoliko korisnih naredbi koje možete koristiti kada radite s Docker volumenima:

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

Ovdje je popis najčešće korištenih opcija za --mount, primjenjivo u naredbi obrasca docker run --mount my_options my_image:

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

Sada kada smo dovršili ovu Docker seriju, vrijeme je da kažemo nekoliko riječi o tome kamo Docker učenici mogu dalje ići. ovdje je odličan dobar članak o Dockeru. ovdje je knjiga o Dockeru (kada kupujete ovu knjigu, pokušajte nabaviti njezino najnovije izdanje). ovdje je još jedna knjiga za one koji misle da je praksa najbolji način učenja tehnologije.

Dragi čitatelji! Koje biste Docker materijale preporučili početnicima za učenje?

Učenje Dockera, 6. dio: Rad s podacima

Izvor: www.habr.com

Dodajte komentar