A Dockerről szóló anyagsorozat fordításának mai részében az adatokkal való munkáról lesz szó. Főleg a Docker kötetekről. Ezekben az anyagokban folyamatosan összehasonlítottuk a Docker programozási mechanizmusokat különféle ehető analógiákkal. Ettől a hagyománytól itt nem térünk el. Legyenek a Dockerben lévő adatok fűszerek. Sokféle fűszer létezik a világon, és a Dockernek számos módja van az adatokkal való munkavégzésre.
Felhívjuk figyelmét, hogy ez az anyag a Docker motor 18.09.1-es verziójával és API-verziójával készült 1.39.
A Dockerben lévő adatok ideiglenesen vagy véglegesen tárolhatók. Kezdjük az ideiglenes adatokkal.
Ideiglenes adattárolás
Kétféleképpen kezelheti az ideiglenes adatokat a Docker-tárolókban.
Alapértelmezés szerint a tárolóban futó alkalmazás által létrehozott fájlok egy írható tárolórétegben tárolódnak. Ahhoz, hogy ez a mechanizmus működjön, semmi különöset nem kell konfigurálni. Olcsónak és vidámnak bizonyul. Az alkalmazásnak egyszerűen el kell mentenie az adatokat, és folytatnia kell a saját dolgát. A konténer megszűnése után azonban az ilyen egyszerű módon mentett adatok is eltűnnek.
Az ideiglenes fájltárolás a Dockerben egy másik megoldás, amely olyan esetekre alkalmas, amikor magasabb szintű teljesítményre van szükség, mint ami a szabványos ideiglenes adattárolási mechanizmussal elérhető. Ha nincs szüksége arra, hogy adatait hosszabb ideig tárolják, mint a tároló, csatlakozhat a tmpfs tárolóhoz – egy ideiglenes információtárolóhoz, amely a gazdagép RAM-ját használja. Ez felgyorsítja az adatírási és -olvasási műveletek végrehajtását.
Gyakran előfordul, hogy az adatokat a tároló megszűnése után is tárolni kell. Ehhez állandó adattárolási mechanizmusokra van szükségünk.
Állandó adattárolás
Kétféleképpen lehet meghosszabbítani az adatok élettartamát a tároló élettartamánál. Az egyik lehetőség a bind mount technológia alkalmazása. Ezzel a megközelítéssel például egy valós mappát csatlakoztathat a tárolóhoz. A Dockeren kívüli folyamatok is képesek lesznek dolgozni egy ilyen mappában tárolt adatokkal. így néz tmpfs mount és bind mount technológia.
A tmpfs és a bind mount felszerelése
A bind mount technológia használatának hátránya, hogy használata bonyolítja az adatmentést, az adatmigrációt, az adatmegosztást több konténer között. Sokkal jobb Docker-köteteket használni az állandó adattároláshoz.
Kötetek Docker
A kötet olyan fájlrendszer, amely a gazdagépen található a tárolókon kívül. A köteteket a Docker hozza létre és kezeli. Íme a Docker-kötetek főbb tulajdonságai:
Ezek az információk állandó tárolásának eszközei.
Függetlenek és el vannak választva a tartályoktól.
Különböző konténerek között megoszthatók.
Lehetővé teszik az adatok hatékony olvasásának és írásának megszervezését.
A kötetek elhelyezhetők egy távoli felhőszolgáltató erőforrásain.
Ezek titkosíthatók.
Nevet lehet adni nekik.
A tároló gondoskodhat a kötet előzetes adatokkal történő feltöltéséről.
Kényelmesek a teszteléshez.
Amint láthatja, a Docker kötetek csodálatos tulajdonságokkal rendelkeznek. Beszéljünk arról, hogyan hozhatjuk létre őket.
Kötetek létrehozása
A kötetek Docker vagy API kérésekkel hozhatók létre.
Itt található egy utasítás a Dockerfile-ban, amely lehetővé teszi kötet létrehozását egy tároló indításakor.
VOLUME /my_volume
Ha hasonló utasítást használ, a Docker a tároló létrehozása után létrehoz egy kötetet, amely tartalmazza a megadott helyen már meglévő adatokat. Vegye figyelembe, hogy ha egy kötetet Docker-fájl használatával hoz létre, az nem mentesíti Önt a kötet csatlakoztatási pontjának megadása alól.
Köteteket is létrehozhat Docker-fájlban a JSON formátum használatával.
Ezenkívül a kötetek létrehozhatók parancssori eszközökkel, miközben a tároló fut.
A kötetek kezelése a parancssorból
▍ kötet létrehozása
Önálló kötetet a következő paranccsal hozhat létre:
docker volume create —-name my_volume
▍Tudjon meg információkat a kötetekről
A Docker-kötetek listájának megtekintéséhez használja a következő parancsot:
docker volume ls
Egy adott kötetet így fedezhet fel:
docker volume inspect my_volume
▍Kötet törlése
A kötetet így törölheti:
docker volume rm my_volume
A tárolók által nem használt összes kötet eltávolításához a következő parancsot használhatja:
docker volume prune
A kötetek törlése előtt a Docker megkéri, hogy erősítse meg ezt a műveletet.
Ha egy kötet egy tárolóhoz van társítva, a kötet nem törölhető mindaddig, amíg a megfelelő tárolót nem törli. Ugyanakkor, még ha a tartályt eltávolítják is, a Docker nem mindig érti ezt. Ha ez megtörténik, használhatja a következő parancsot:
docker system prune
Úgy tervezték, hogy megtisztítsa a Docker-erőforrásokat. A parancs végrehajtása után képesnek kell lennie arra, hogy törölje azokat a köteteket, amelyek állapota korábban hibás volt.
A --mount és --volume jelzők
A kötetek kezeléséhez a parancs meghívásakor docker, gyakran kell zászlókat használnod. Például egy kötet létrehozásához a tároló létrehozása során használhatja ezt a konstrukciót:
docker container run --mount source=my_volume, target=/container/path/for/volume my_image
Az ókorban (2017-ig) a zászló népszerű volt --volume. Kezdetben ez a zászló (rövidítve is használható, aztán úgy néz ki -v) önálló konténerekhez és a zászlóhoz használták --mount - Docker Swarm környezetben. Azonban a Docker 17.06-tól a zászló --mount bármilyen forgatókönyvben használható.
Meg kell jegyezni, hogy a zászló használatakor --mount a parancsban megadandó további adatok mennyisége nő, de több okból is jobb ezt a jelzőt használni, és nem --volume. Zászló --mount az egyetlen olyan mechanizmus, amely lehetővé teszi a szolgáltatásokkal való együttműködést vagy a kötet illesztőprogram-beállításainak megadását. Ezenkívül ezzel a zászlóval könnyebb dolgozni.
A Docker adatkezelési parancsok meglévő példáiban számos példát láthat a jelző használatára -v. Amikor megpróbálja adaptálni ezeket a parancsokat saját magának, ne feledje, hogy a zászlók --mount и --volume különböző paraméterformátumokat használjon. Vagyis nem lehet egyszerűen lecserélni -v on --mount és szerezz egy működő csapatot.
A fő különbség a között --mount и --volume hogy a zászló használatakor --volume az összes paraméter egy mezőben van összegyűjtve, és használat közben --mount a paraméterek el vannak választva.
Amikor dolgozik --mount paraméterek kulcs-érték párokként vannak ábrázolva, vagyis úgy néz ki key=value. Ezeket a párokat vesszővel választjuk el. Itt vannak a gyakran használt lehetőségek --mount:
type - rögzítés típusa. A megfelelő kulcs értéke lehet kötődik, kötet vagy tmpfs. Itt kötetekről van szó, vagyis minket az érték érdekel volume.
source - mount forrás. Elnevezett kötetek esetén ez a kötet neve. Névtelen köteteknél ez a kulcs nincs megadva. Le lehet rövidíteni src.
destination - az elérési út, amelyhez a fájl vagy mappa a tárolóba van csatolva. Ez a kulcs rövidíthető dst vagy target.
readonly - a kívánt kötetet rögzíti csak olvasásra. Ennek a kulcsnak a használata nem kötelező, és nincs hozzárendelve érték.
Itt van egy példa a felhasználásra --mount sok lehetőséggel:
docker run --mount type=volume,source=volume_name,destination=/path/in/container,readonly my_image
Eredményei
Íme néhány hasznos parancs, amelyet a Docker-kötetekkel való munka során használhat:
docker volume create
docker volume ls
docker volume inspect
docker volume rm
docker volume prune
Itt található a leggyakrabban használt opciók listája --mount, amely az űrlap parancsában alkalmazható docker run --mount my_options my_image:
type=volume
source=volume_name
destination=/path/in/container
readonly
Most, hogy befejeztük ezt a Docker-sorozatot, ideje néhány szót szólni arról, hogy a Docker-tanulók merre indulhatnak tovább. Itt jó cikk a Dockerről. Itt egy könyv a Dockerről (a könyv megvásárlásakor próbálja megszerezni a legújabb kiadást). Itt egy újabb könyv azoknak, akik szerint a gyakorlat a legjobb módja a technológia elsajátításának.
Kedves olvasók! Milyen Docker anyagokat ajánlana kezdőknek tanulni?