Učenje Dockera, dio 6: 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 Docker mehanizme programiranja s raznim jestivim analogijama. Ovdje nećemo odstupiti od ove tradicije. Neka podaci u Dockeru budu začini. Na svijetu postoji mnogo začina, a Docker ima mnogo načina za rad s podacima.

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

Učenje Dockera, dio 6: Rad s podacima

Napominjemo da je ovaj materijal pripremljen korištenjem Docker engine verzije 18.09.1 ​​i verzije API-ja 1.39.

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

Privremeno skladištenje podataka

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

Prema zadanim postavkama, datoteke kreirane od strane aplikacije koja radi u kontejneru se pohranjuju u sloju kontejnera za pisanje. Da bi ovaj mehanizam radio, ne treba ništa posebno konfigurirati. Ispada jeftino i veselo. Aplikacija jednostavno treba da sačuva podatke i nastavi da radi svoje. Međutim, nakon što kontejner prestane postojati, podaci spremljeni na tako jednostavan način također će nestati.

Privremena pohrana datoteka u Docker-u je još jedno rješenje koje je pogodno za slučajeve gdje je potreban viši nivo performansi u odnosu na ono što je moguće postići korištenjem standardnog mehanizma za privremenu pohranu podataka. Ako ne trebate da se vaši podaci pohranjuju duže nego što kontejner postoji, možete se povezati sa kontejnerom tmpfs - privremenim spremištem informacija koje koristi RAM hosta. Ovo će ubrzati izvođenje operacija pisanja i čitanja podataka.

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

Trajno skladištenje podataka

Postoje dva načina da životni vijek podataka bude duži od vijeka trajanja kontejnera. Jedan od načina je korištenje tehnologije povezivanja. Ovim pristupom možete montirati, na primjer, fasciklu iz stvarnog života u kontejner. Procesi izvan Dockera će također moći raditi s podacima pohranjenim u takvoj mapi. Tako gledaj tmpfs mount i bind tehnologija montiranja.

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

Nedostaci upotrebe bind mount tehnologije su to što njena upotreba komplikuje sigurnosnu kopiju podataka, migraciju podataka, dijeljenje podataka između nekoliko kontejnera. Mnogo je bolje koristiti Docker volumene za trajno skladištenje podataka.

Volumes Docker

Volumen je sistem datoteka koji se nalazi na glavnom računalu izvan kontejnera. Volume kreira i njime upravlja Docker. Evo glavnih svojstava Docker volumena:

  • Oni su sredstvo trajnog skladištenja informacija.
  • Oni su nezavisni i odvojeni od kontejnera.
  • Mogu se dijeliti između različitih kontejnera.
  • Oni vam omogućavaju da organizujete efikasno čitanje i pisanje podataka.
  • Volume se mogu postaviti na resurse udaljenog provajdera u oblaku.
  • Mogu se šifrirati.
  • Mogu im se dati imena.
  • Kontejner može organizirati prethodno popunjavanje volumena podacima.
  • Pogodne su za testiranje.

Kao što vidite, Docker volumeni imaju neverovatna svojstva. Razgovarajmo o tome kako ih stvoriti.

Kreiranje volumena

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

Evo instrukcije u Dockerfile-u koje vam omogućava da kreirate volumen prilikom pokretanja kontejnera.

VOLUME /my_volume

Kada koristite sličnu instrukciju, Docker će nakon kreiranja kontejnera kreirati volumen koji sadrži podatke koji već postoje na navedenoj lokaciji. Imajte na umu da ako kreirate volumen koristeći Dockerfile, to vas ne oslobađa potrebe da navedete tačku montiranja volumena.

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

Osim toga, volumeni se mogu kreirati pomoću alata komandne linije dok je kontejner pokrenut.

Rad sa volumenima iz komandne linije

▍Kreiranje volumena

Možete kreirati samostalni volumen sa sljedećom naredbom:

docker volume create —-name my_volume

▍Pronađite informacije o volumenima

Da vidite listu Docker volumena, koristite sljedeću naredbu:

docker volume ls

Možete istražiti određeni volumen ovako:

docker volume inspect my_volume

▍Brisanje volumena

Volumen možete izbrisati ovako:

docker volume rm my_volume

Da biste uklonili sve volumene koje kontejneri ne koriste, možete koristiti sljedeću naredbu:

docker volume prune

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

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

docker system prune

Dizajniran je za čišćenje Docker resursa. Nakon izvršenja ove naredbe, trebali biste biti u mogućnosti da obrišete volumene čiji je status prethodno bio netačan.

Zastavice --mount i --volume

Za rad sa volumenima, kada pozovete komandu docker, često ćete morati koristiti zastavice. Na primjer, da kreirate volumen tokom kreiranja kontejnera, 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 kao -v) je korišten za samostalne kontejnere i zastavu --mount - u Docker Swarm okruženju. Međutim, od Docker 17.06, zastava --mount može se koristiti u bilo kojem scenariju.

Treba napomenuti da prilikom upotrebe zastave --mount povećava se količina dodatnih podataka koji se moraju specificirati u naredbi, ali je, iz nekoliko razloga, bolje koristiti ovu zastavicu, a ne --volume. Zastava --mount je jedini mehanizam koji vam omogućava rad sa uslugama ili specificiranje opcija drajvera za volumen. Takođe, sa ovom zastavicom je lakše raditi.

U postojećim primjerima Docker naredbi za manipulaciju podacima možete vidjeti mnoge primjere upotrebe zastavice -v. Kada pokušavate prilagoditi ove komande za sebe, imajte na umu da su zastavice --mount и --volume koristiti različite formate parametara. To jest, ne možete jednostavno zamijeniti -v na --mount i dobiti radni tim.

Glavna razlika između --mount и --volume je to kada koristite zastavu --volume svi parametri se skupljaju zajedno u jednom polju i kada se koriste --mount parametri su odvojeni.

Prilikom rada sa --mount parametri su predstavljeni kao parovi ključ/vrijednost, naime, izgleda tako 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, zapremina ili tmpfs. Ovdje govorimo o količinama, odnosno zanima nas vrijednost volume.
  • source - mount izvor. Za imenovane volumene, ovo je naziv volumena. Za neimenovane volumene, ovaj ključ nije naveden. Može se skratiti na src.
  • destination - putanja na koju se datoteka ili mapa montira u kontejner. Ovaj ključ se može skratiti na dst ili target.
  • readonly - montira volumen koji je namijenjen samo za čitanje. Upotreba ovog ključa je opciona i nikakva vrijednost mu nije dodijeljena.

Evo primjera upotrebe --mount sa mnogo opcija:

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

Ishodi

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

Evo liste najčešće korištenih opcija za --mount, primjenjiv u naredbi obrasca docker run --mount my_options my_image:

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

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

Dragi čitaoci! Koje Docker materijale biste preporučili početnicima da nauče?

Učenje Dockera, dio 6: Rad s podacima

izvor: www.habr.com

Dodajte komentar