A mai részben a Docker anyagok fordítási sorozatában az adatok kezeléséről fogunk beszélni. Különösen a Docker kötetekről. Ezekben az anyagokban folyamatosan összehasonlítottuk a Docker szoftveres mechanizmusait különböző ehető analógiákkal. Ne térjünk el ettől a hagyománytól itt sem. Az adatok a Dockerben legyenek fűszerek. A világ számos fűszerfajtával rendelkezik, és a Dockerben is sokféle módon dolgozhatunk az adatokkal.
→
→
→
→
→
→
Felhívjuk figyelmét, hogy ezt az anyagot a Docker 18.09.1-es verziójával és az API verzióval készítették. .
A Dockerben az adatok ideiglenesen vagy tartósan tárolhatók. Kezdjük az ideiglenes adatokkal.
Ideiglenes adat tárolás
A Docker konténerekben az ideiglenes adatok kezelésére két lehetőség van.
Alapértelmezés szerint a konténerben futó alkalmazás által létrehozott fájlok a konténer írásra képes rétegében tárolódnak. Ahhoz, hogy ez a mechanizmus működjön, semmit nem kell külön beállítani. Olcsón és egyszerűen megoldható. Az alkalmazásnak csak annyit kell tennie, hogy elmenti az adatokat, és folytatja a dolgait. Azonban miután a konténer megszűnik létezni, az így tárolt adatok is eltűnnek.
Az ideiglenes fájlok tárolásához a Dockerben van még egy megoldás, amely a standard ideiglenes tárolási mechanizmushoz képest magasabb teljesítményigényt kielégít. Ha nem kell, hogy az adatai tovább éljenek, mint a konténer, csatlakoztathat egy tmpfs-t a konténerhez - ideiglenes adattárolót, amely a gazda operatív memóriáját használja. Ez felgyorsítja az adatok írási és olvasási műveleteit.
Gyakran előfordul, hogy az adatokat tárolni kell, miután a konténer megszűnik létezni. Ehhez szükségünk lesz a tartós adatok tárolásának mechanizmusaira.
Folyamatos adatmentés
Két módszer létezik, amelyekkel a adatok élettartama meghosszabbítható a konténer élettartamához képest. Az egyik módszer a bind mount technológia használata. Ilyen megközelítéssel a konténerhez például egy valós mappa csatolható. Az ilyen mappában tárolt adatokkal azok a folyamatok is dolgozhatnak, amelyek a Docker-en kívül futnak. Íme, hogyan a tmpfs csatolás és a bind mount technológia.

Tmpfs csatolása és bind mount
A bind mount technológia használatának hátránya, hogy bonyolítja az adatok biztonsági mentését, az adatok migrálását és az adatok több konténer általi megosztását. Sokkal jobb állandó adatok tárolására a Docker kötetek használata.
Docker kötetek
A kötet egy olyan fájlrendszer, amely a gazdagépen található a konténereken kívül. A kötetek létrehozása és kezelése a Docker feladata. Íme a Docker kötetek fő jellemzői:
- Különálló tárolási megoldások az információk számára.
- Önállóak és elkülönültek a konténerektől.
- Különböző konténerek közösen használhatják őket.
- Lehetővé teszik az adatok hatékony olvasását és írását.
- A köteteket tárolhatjuk távoli felhőszolgáltatók erőforrásaiban.
- Titkosíthatók.
- Nevezhetők.
- A konténer előre feltöltheti a kötetet adatokkal.
- Jól használhatók teszteléshez.
Ahogy láthatja, a Docker kötetek nagyszerű tulajdonságokkal rendelkeznek. Beszéljünk arról, hogyan lehet őket létrehozni.
Kötetek létrehozása
A köteteket a Docker eszközeivel vagy API-lekérdezések segítségével lehet létrehozni.
Itt egy Dockerfile utasítás, amely lehetővé teszi egy kötet létrehozását a konténer indítása során.
VOLUME /my_volumeIlyen utasítás használatával a Docker létrehoz egy kötetet, amely tartalmazza az adott helyen már meglévő adatokat, miután létrehozza a konténert. Vegye figyelembe, hogy ha Dockerfile-t használ egy kötet létrehozásához, ez nem mentesít a kötet csatolási pontjának megadásának szükségessége alól.
Köteteket a Dockerfile-ban JSON formátumban is lehet létrehozni.
Emellett köteteket parancssoron is létrehozhatunk a konténer futása közben.
Kötetek kezelése parancssorból
▍Kötet létrehozása
Önálló kötetet a következő parancs segítségével hozhat létre:
docker volume create --name my_volume▍Információk megszerzése a kötetekről
A Docker kötetek listájának megtekintéséhez használja a következő parancsot:
docker volume lsEgy konkrét kötetet így vizsgálhat meg:
docker volume inspect my_volume▍Kötet törlése
A kötetet így törölheti:
docker volume rm my_volumeTörölheti az összes olyan kötetet, amelyet nem használnak konténerek, a következő parancs segítségével:
docker volume pruneA Docker törlés előtt megerősítést fog kérni az eljárás végrehajtásához.
Ha a kötet bármely konténerhez kapcsolódik, azt nem lehet törölni, amíg a megfelelő konténert el nem távolítják. Emellett, még ha a konténer törölve is lett, a Docker ezt nem mindig érti. Ha ez megtörténik, használhatja a következő parancsot:
docker system pruneEz a Docker erőforrások tisztítására szolgál. E parancs végrehajtása után lehetősége kell legyen a kötetek törlésére, amelyek státusza korábban tévesen lett meghatározva.
A —mount és a —volume kapcsolók
A kötetek kezeléséhez, amikor a parancsot hívja meg, gyakran használnia kell a kapcsolókat. Például, hogy kötetet hozzon létre a konténer létrehozásakor, használhatja a következő syntaxist: dockerdocker container run --mount source=my_volume, target=\/container\/path\/for\/volume my_image
Régen (2017 előtt) a —volume kapcsoló volt a közkedvelt. Ez a kapcsoló (azt is lehet rövidíteni, ekkor így néz ki ) eredetileg önálló konténerekhez készült, míg a —mount kapcsoló a Docker Swarm környezetben használatos. Azonban a Docker 17.06-tól kezdve a kapcsolót bármilyen forgatókönyvben lehet alkalmazni.Meg kell jegyezni, hogy a —mount kapcsoló használatakor megnő a parancsban megadandó kiegészítő adatok mennyisége, de több okból is jobb ezt a kapcsolót használni, mint a -v— ez az egyetlen mechanizmus, amely lehetővé teszi a szolgáltatásokkal való munkát vagy a kötet meghajtó paramétereinek megadását. Ezen kívül e kapcsolóval könnyebb dolgozni. A Dockerben való adatokkal való munkavégzésre irányuló parancsokban számos példát találhat a kapcsoló használatára. Ezeknek a parancsoknak a saját igényeihez való alkalmazásakor vegye figyelembe, hogy a kapcsolók különböző paraméterformátumokat használnak. Vagyis nem lehet egyszerűen a A Dockerben való adatokkal való munkavégzésre irányuló parancsokban számos példát találhat a helyettesítésével működő parancsot kapni.
A fő különbség a A Dockerben való adatokkal való munkavégzésre irányuló parancsokban számos példát találhat a kapcsolók között abban rejlik, hogy a —mount kapcsoló használatakor az összes paraméter egy helyen, egy mezőben gyűlik össze, míg a ) eredetileg önálló konténerekhez készült, míg a —mount kapcsoló a Docker Swarm környezetben használatos. Azonban a Docker 17.06-tól kezdve a kapcsolót bármilyen forgatókönyvben lehet alkalmazni.. A jelző A Dockerben való adatokkal való munkavégzésre irányuló parancsokban számos példát találhat a kapcsoló használatakor
a paraméterek külön állnak. -v. Amikor ezeket a parancsokat próbálja meg adaptálni, vegye figyelembe, hogy a zászlók A Dockerben való adatokkal való munkavégzésre irányuló parancsokban számos példát találhat a és ) eredetileg önálló konténerekhez készült, míg a —mount kapcsoló a Docker Swarm környezetben használatos. Azonban a Docker 17.06-tól kezdve a kapcsolót bármilyen forgatókönyvben lehet alkalmazni. különböző paraméterformátumokat használnak. Tehát nem lehet egyszerűen -v Gyorsan emlékezzünk vissza, hogyan működik a moduláris aritmetika. Az óra már egy ismert koncepció. Az órák használata A Dockerben való adatokkal való munkavégzésre irányuló parancsokban számos példát találhat a csak így kicserélni, és működő parancsot kapni.
A fő különbség A Dockerben való adatokkal való munkavégzésre irányuló parancsokban számos példát találhat a és ) eredetileg önálló konténerekhez készült, míg a —mount kapcsoló a Docker Swarm környezetben használatos. Azonban a Docker 17.06-tól kezdve a kapcsolót bármilyen forgatókönyvben lehet alkalmazni. abban rejlik, hogy a zászló használatakor ) eredetileg önálló konténerekhez készült, míg a —mount kapcsoló a Docker Swarm környezetben használatos. Azonban a Docker 17.06-tól kezdve a kapcsolót bármilyen forgatókönyvben lehet alkalmazni. az összes paraméter egy mezőben gyűlik össze, míg a használatakor A Dockerben való adatokkal való munkavégzésre irányuló parancsokban számos példát találhat a A paraméterek elválasztva.
A A Dockerben való adatokkal való munkavégzésre irányuló parancsokban számos példát találhat a A paraméterek kulcs-érték párokként jelennek meg, nevezetesen, így néz ki key=value. Ezek a párok vesszővel vannak elválasztva. Íme a gyakran használt paraméterek A Dockerben való adatokkal való munkavégzésre irányuló parancsokban számos példát találhat a:
type— a csatolás típusa. A megfelelő kulcshoz tartozó érték lehet , vagy . Itt a kötetekről beszélünk, azaz az értékeink érdeklikvolume.forrás— a csatolt forrás. Nevezett kötetek esetén ez a kötet neve. Nevezetlen köteteknél ezt a kulcsot nem adjuk meg. Rövidíthetősrc.rendelkezés— az az útvonal, ahol a fájl vagy mappa a konténerben csatlakozik. Ez a kulcs is rövidíthetődstvagytarget.readonly— egy kötetet csatlakoztat, amely célja . E kulcs használata nem kötelező, értéket nem kap.
Íme egy példa használatra A Dockerben való adatokkal való munkavégzésre irányuló parancsokban számos példát találhat a sok paraméterrel:
docker run --mount type=volume,source=volume_name,destination=\/path\/in\/container,readonly my_imageÖsszegzés
Íme néhány hasznos parancs, amelyeket használhatunk Docker kötetekkel:
docker volume createdocker volume lsdocker volume inspectdocker volume rmdocker volume prune
Íme a gyakran használt paraméterek listája A Dockerben való adatokkal való munkavégzésre irányuló parancsokban számos példát találhat a, amelyeket a következő parancsban alkalmazhatunk docker run --mount my_options my_image:
type=volumesource=volume_namedestination=\/path\/in\/containerreadonly
Most, hogy befejeztük ezt a Docker-ról szóló sorozatot, itt az ideje, hogy néhány szót mondjunk arról, merre tovább érdeklődjenek, akik Docker-t tanulnak. egy nagy és hasznos cikk Docker-ról. egy könyv Docker-ról (ha ezt a könyvet megvásárolja, próbáljon meg a legfrissebb kiadást beszerezni). még egy könyv, amely megfelel azoknak, akik úgy vélik, hogy a gyakorlat a legjobb módja a technológiák elsajátításának.
Használjátok a CI/CD technológiákat a projektjeitekben? Milyen anyagokat ajánlana Docker-t tanuló újoncoknak?
Forrás: habr.com
