Kako funkcionira Docker pohrana: Volumeni vs Povezani priključci | INTROSERV
EUR
european

EUR

usa

USD

Croatia Hr
Ex. VAT Ex. VAT 0%

Kako funkcionira Docker pohrana: Volumeni vs Povezani priključci

Uvod

U ovom vodiču naučit ćete kako funkcionira Docker pohrana i kako trajno pohraniti podatke koristeći Docker Volumes i Bind Mounts. Također ćete razumjeti ključne razlike između ovih pristupa i kada koristiti svaki od njih u produkciji. Ovo vam pomaže izbjeći gubitak podataka i dizajnirati pouzdane sustave u kontejnerima.

Preduvjeti

  • Ciljana publika: Početnici sistem administratori
  • Procijenjeno vrijeme: ~30 minuta
  • Operativni sustav: Bilo koji OS s podrškom za Docker kao što su Ubuntu 22.04+, Debian 12+, CentOS Stream ili macOS s Docker Desktop
  • Softver: Docker 24.0.0 ili noviji
  • Dozvole: Korisnik s pristupom Dockeru ili sudo privilegijama
  • Hardver: Najmanje 2 GB RAM-a i 10 GB slobodnog prostora na disku
  • Mreža: Pristup internetu za preuzimanje slika kontejnera
  • Pretpostavljeno znanje: Osnovno korištenje naredbenog retka i razumijevanje kontejnera

Korak 1: Razumijevanje kako funkcionira Docker pohrana

Docker kontejneri koriste slojeviti datotečni sustav. Svaki kontejner ima sloj za pisanje na vrhu slojeva slike koji su samo za čitanje.

Što se događa kada kontejner zapisuje podatke

  1. Docker pohranjuje slojeve slike kao samo za čitanje
  2. Kada pokrenete kontejner, Docker dodaje sloj za pisanje
  3. Sve promjene datoteka događaju se samo u ovom sloju za pisanje

Rezultat

Kada izbrišete kontejner, svi podaci u sloju za pisanje se gube. To znači da je pohrana kontejnera po defaultu prolazna.

Info

Ovo ponašanje je korisno za aplikacije bez stanja, ali ne i za baze podataka ili trajne usluge.

Korak 2: Kreiranje i korištenje Docker Volumes

Docker Volumes su upravljane lokacije za pohranu koje kreira i održava Docker.

Kreirajte volumen

Pokrenite sljedeću naredbu:

docker volume create my_volume

Trebali biste vidjeti vraćeno ime volumena.

Koristite volumen u kontejneru

Pokrenite sljedeću naredbu:

docker run -d -v my_volume:/app/data --name volume_test busybox

Docker montira volumen unutar kontejnera na /app/data.

Rezultat

Podaci zapisani u /app/data ostaju čak i ako se kontejner ukloni.

Ključne karakteristike volumena

  • Upravlja ih Docker
  • Pohranjeni u Docker internim direktorijima kao što je /var/lib/docker/volumes/
  • Lako ih je sigurnosno kopirati i migrirati
  • Izolirani od strukture datotečnog sustava domaćina

Tip

Koristite volumene za baze podataka i produkcijska opterećenja.

Korak 3: Kreiranje i korištenje Bind Mounts

Bind mounts povezuju određeni direktorij na domaćinu s direktorijem unutar kontejnera.

Koristite bind mount

Pokrenite sljedeću naredbu:

docker run -d -v /home/<YOUR_USERNAME>/data:/app/data --name bind_test busybox

Rezultat

Kontejner izravno pristupa direktoriju domaćina. Sve promjene u direktoriju domaćina odmah su vidljive unutar kontejnera.

Ključne karakteristike bind mounts

  • Ovise o putanjama datotečnog sustava domaćina
  • Omogućuju izravno uređivanje datoteka s domaćina
  • Nema Docker-om upravljane izolacije
  • Fleksibilniji, ali manje prenosivi

Info

Bind mounts odmah odražavaju promjene između domaćina i kontejnera.

Korak 4: Usporedba Volumes i Bind Mounts

Razumijevanje razlika pomaže vam odabrati pravu opciju.

Docker Volumes

  • Upravlja ih Docker
  • Prenosivi između okruženja
  • Sigurniji za produkcijsku upotrebu
  • Lakši za sigurnosno kopiranje
  • Apstrahirani od datotečnog sustava domaćina

Bind Mounts

  • Upravlja ih domaćin
  • Vezani za specifične putanje datotečnog sustava
  • Korisni za razvoj
  • Omogućuju izravan pristup datotekama
  • Manje sigurni ako su pogrešno konfigurirani

Korak 5: Odabir između Volumes i Bind Mounts u produkciji

Koristite sljedeće smjernice.

Kada koristiti Docker Volumes

  • Pokretanje baza podataka kao što su MySQL ili PostgreSQL
  • Pohrana podataka aplikacije koji moraju ostati
  • Implementacija produkcijskih usluga
  • Potreba za prenosivošću između servera

Kada koristiti Bind Mounts

  • Lokalna razvojna okruženja
  • Izravno uređivanje koda ili konfiguracijskih datoteka
  • Otklanjanje pogrešaka u ponašanju kontejnera
  • Privremene ili testne postavke

Info

Važno: Bind mounts mogu izložiti osjetljive datoteke domaćina kontejnerima ako su pogrešno konfigurirani. Uvijek provjerite putanje i dozvole.

Provjera i testiranje

Kreirajte testni kontejner s volumenom:

docker run -it -v my_volume:/data --name playground busybox

Unutar kontejnera, kreirajte datoteku:

echo test > /data/file.txt

Izađite iz kontejnera i uklonite ga:

docker rm -f playground

Pokrenite novi kontejner s istim volumenom:

docker run -it -v my_volume:/data --name playground busybox

Provjerite datoteku:

cat /data/file.txt

Očekivani rezultat: Datoteka još uvijek postoji, što potvrđuje trajnost podataka.

Vraćanje promjena

Za čišćenje resursa, pokrenite sljedeće naredbe:

docker rm -f playground volume_test bind_test

docker volume rm my_volume

docker system prune -f

Info

Važno: Uklanjanje volumena trajno briše sve pohranjene podatke.

Otklanjanje poteškoća

  • Problem: Podaci nestaju nakon ponovnog pokretanja kontejnera
    Uzrok: Nije korišten volumen ili bind mount
    Rješenje: Priključite trajnu pohranu koristeći volumene ili bind mounts
  • Problem: Pogreške zbog odbijanja dozvole
    Uzrok: Nepodudaranje dozvola direktorija domaćina
    Rješenje: Prilagodite dozvole koristeći chmod ili chown
  • Problem: Volumen se ne montira ispravno
    Uzrok: Pogrešna putanja ili sintaksa
    Rješenje: Provjerite format montiranja i putanje

Zaključak i sljedeći koraci

Naučili ste kako funkcionira Docker pohrana i kako trajno pohraniti podatke koristeći volumene i bind mounts. Također razumijete kada koristiti svaki pristup u produkciji. Sljedeće, istražite Docker Compose za upravljanje aplikacijama s više kontejnera i definiranje pohrane na strukturiraniji način.

VAT

  • Other

    Ex. VAT

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • germany
  • Español
  • Italiano
  • Poland
  • Русский
  • Slovenski
  • Türkçe
  • ukraine
  • kingdom
  • French
  • Hrvatska
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA