Sobes.tech
Junior

Jaký je rozdíl mezi volumem a jednoduchým svazkem (bindingem) ke složce na hostiteli?

sobes.tech AI

Odpověď od AI

  • Volumes (Volumes): Životní cyklus svazku je oddělen od životního cyklu kontejneru. Docker spravuje ukládání svazků na hostitelském stroji. Svazky jsou vytvářeny, připojovány a odstraňovány Dockerem a jejich data zůstávají zachována i po zastavení nebo odstranění kontejneru. Jsou ideální pro trvalé ukládání dat, databáze nebo sdílená data mezi kontejnery.

  • Přímé připojení ke složce na hostitelském stroji (Bind Mounts): Přímo spojují adresář nebo soubor na hostitelském stroji s adresářem nebo souborem uvnitř kontejneru. Docker přímo neřídí ukládání dat, pouze vytváří bod připojení. Změny v souborovém systému kontejneru na tomto bodě se odrážejí na hostitelském stroji a naopak. Jsou vhodné pro:

    • Vývoj: Připojení zdrojového kódu do kontejneru pro okamžitou zpětnou vazbu na změny.
    • Konfiguraci: Přenos konfiguračních souborů z hostitele do kontejneru.
    • Přístup ke zdrojům hostitele: Umožnění kontejneru přístup k určitým souborům nebo adresářům na hostiteli.

Hlavní rozdíly:

Charakteristika Svazek (Volume) Připojení na hostiteli (Bind Mount)
Správa Docker plně spravuje ukládání Docker pouze vytváří bod připojení
Životní cyklus Oddělen od kontejneru Vázáno na existenci adresáře/souboru na hostiteli
Výkon Optimalizováno pro I/O Závisí na výkonu souborového systému hostitele
Přenositelnost Snadnější přes Dockerfile/Compose Méně přenositelné, závisí na struktuře hostitele
Izolace Poskytuje lepší izolaci od hostitele Méně izolované od souborového systému hostitele

Příklad použití svazku v Dockerfile:

# Použití svazku
VOLUME /app/data

Příklad použití připojení na hostiteli při spuštění kontejneru:

# Připojení adresáře
docker run -v /cesta/na/hostiteli:/cesta/v/kontejneru moje_obraz

Příklad použití svazku při spuštění kontejneru:

# Použití pojmenovaného svazku
docker run -v mujsvazek:/cesta/v/kontejneru moje_obraz