Share via


Állapot és adatok kezelése Docker-alkalmazásokban

Tipp.

Ez a tartalom egy részlet a .NET-alkalmazásokhoz készült .NET-alkalmazásokhoz készült eBook, .NET Microservices Architecture című eBookból, amely elérhető a .NET Docs-on vagy egy ingyenesen letölthető PDF-fájlként, amely offline módban is olvasható.

.NET Microservices Architecture for Containerized .NET Applications eBook cover thumbnail.

A legtöbb esetben a tárolót folyamatpéldányként tekintheti. Egy folyamat nem tartja fenn az állandó állapotot. Bár a tárolók írhatnak a helyi tárolóba, feltéve, hogy egy példány határozatlan ideig lesz, olyan lenne, mintha azt feltételeznénk, hogy a memória egyetlen helye tartós lesz. Feltételezheti, hogy a tárolórendszerképek, például a folyamatok, több példányt is használnak, vagy végül le lesznek ölve. Ha tárolóvezénylővel kezeli őket, feltételezheti, hogy az egyik csomópontról vagy virtuális gépről egy másikra kerülnek át.

A docker-alkalmazások adatainak kezelésére a következő megoldások szolgálnak:

A Docker-gazdagépről Docker-kötetként:

  • A kötetek a Docker által felügyelt gazdagép fájlrendszerének egy területén vannak tárolva.

  • A kötési csatlakoztatások a gazdagép fájlrendszerének bármely mappájába leképezhetők, így a hozzáférés nem szabályozható a Docker-folyamatból, és biztonsági kockázatot jelenthet, mivel a tárolók hozzáférhetnek a bizalmas operációsrendszer-mappákhoz.

  • A tmpfs-csatlakoztatások olyanok, mint a virtuális mappák, amelyek csak a gazdagép memóriájában léteznek, és soha nem íródnak a fájlrendszerbe.

Távoli tárolóból:

  • Az Azure Storage, amely georedukciós tárolást biztosít, jó hosszú távú adatmegőrzési megoldást nyújt a tárolók számára.

  • Távoli relációs adatbázisok, például az Azure SQL Database vagy a NoSQL-adatbázisok, például az Azure Cosmos DB vagy a gyorsítótárszolgáltatások, például a Redis.

A Docker-tárolóból:

  • Átfedő fájlrendszer. Ez a Docker-funkció olyan írási másolási feladatot valósít meg, amely a tároló gyökér fájlrendszerében tárolja a frissített információkat. Ez az információ annak az eredeti képnek a tetején található, amelyen a tároló alapul. Ha a tároló törlődik a rendszerből, ezek a módosítások elvesznek. Ezért bár egy tároló állapotát mentheti a helyi tárolón belül, a rendszer ennek köré történő megtervezése ütközik a tárolóterv helyével, amely alapértelmezés szerint állapot nélküli.

A Docker-kötetek használata azonban a dockerben a helyi adatok kezelésének előnyben részesített módja. Ha további információra van szüksége a tárolókban való tárolásról, ellenőrizze a Docker-tárolóillesztőket és a Tárolóillesztőket.

Az alábbiak részletesebben ismertetik ezeket a lehetőségeket:

A kötetek a gazdagép operációs rendszerétől a tárolók könyvtáraiig leképezett könyvtárak. Ha a tároló kódjának hozzáférése van a címtárhoz, az valójában a gazdagép operációs rendszerének egyik könyvtárához kapcsolódik. Ez a könyvtár nincs a tároló élettartamához kötve, és a címtárat a Docker felügyeli, és elkülöníti a gazdagép alapvető funkcióitól. Így az adatkötetek úgy vannak kialakítva, hogy a tároló élettartamától függetlenül megőrizze az adatokat. Ha töröl egy tárolót vagy egy lemezképet a Docker-gazdagépről, az adatkötetben tárolt adatok nem törlődnek.

A kötetek neve vagy névtelen (alapértelmezés szerint) lehet. A névvel ellátott kötetek az adatkötet-tárolók fejlődését jelentik , és megkönnyítik az adatok tárolók közötti megosztását. A kötetek támogatják a kötetillesztőket is, amelyek lehetővé teszik az adatok távoli gazdagépeken való tárolását, többek között.

A kötési csatlakoztatások már régóta elérhetők, és lehetővé teszik a mappák hozzárendelését egy tároló csatlakoztatási pontjára. A kötések csatlakoztatása több korlátozással rendelkezik, mint a kötetek és néhány fontos biztonsági probléma, ezért a kötetek ajánlottak.

A tmpfs-csatlakoztatások alapvetően olyan virtuális mappák, amelyek csak a gazdagép memóriájában élnek, és soha nem íródnak a fájlrendszerbe. Ezek gyorsak és biztonságosak, de memóriát használnak, és csak ideiglenes, nem állandó adatokra szolgálnak.

A 4–5. ábrán látható módon a normál Docker-kötetek a tárolókon kívül, de a gazdakiszolgáló vagy a virtuális gép fizikai határain belül is tárolhatók. A Docker-tárolók azonban nem férnek hozzá egy kötethez az egyik gazdagépkiszolgálóról vagy virtuális gépről a másikra. Más szóval ezekkel a kötetekkel nem lehet kezelni a különböző Docker-gazdagépeken futó tárolók között megosztott adatokat, bár távoli gazdagépeket támogató kötetillesztővel érhető el.

Diagram showing volumes and external data sources for container-based apps.

4-5. ábra. Kötetek és külső adatforrások tárolóalapú alkalmazásokhoz

A kötetek megoszthatók tárolók között, de csak ugyanabban a gazdagépen, kivéve, ha távoli gazdagépeket támogató távoli illesztőprogramot használ. Emellett, ha a Docker-tárolókat egy vezénylő felügyeli, a tárolók a fürt által végrehajtott optimalizálásoktól függően "mozoghatnak" a gazdagépek között. Ezért nem ajánlott adatköteteket használni az üzleti adatokhoz. Jó módszer azonban nyomkövetési fájlok, időbeli fájlok vagy hasonlók használatához, amelyek nem befolyásolják az üzleti adatok konzisztenciáját.

A távoli adatforrások és gyorsítótáreszközök , például az Azure SQL Database, az Azure Cosmos DB vagy a redishez hasonló távoli gyorsítótár ugyanúgy használhatók tárolóalapú alkalmazásokban, mint a tárolók nélküli fejlesztéskor. Ez egy bevált módszer az üzleti alkalmazások adatainak tárolására.

Azure Storage. Az üzleti adatokat általában külső erőforrásokba vagy adatbázisokba, például az Azure Storage-ba kell helyezni. Az Azure Storage konkrétan a következő szolgáltatásokat biztosítja a felhőben:

  • A Blob Storage strukturálatlan objektumadatokat tárol. A blob bármilyen típusú szöveges vagy bináris adat lehet, például dokumentum- vagy médiafájlok (képek, hang- és videofájlok). A Blob Storage más néven Objektumtárnak is hívható.

  • A fájltárolás megosztott tárterületet biztosít a hagyományos SMB protokollt használó örökölt alkalmazásokhoz. Az Azure-beli virtuális gépek és felhőszolgáltatások csatlakoztatott megosztásokon keresztül oszthatják meg a fájladatokat az alkalmazás összetevői között. A helyszíni alkalmazások a fájlszolgáltatás REST API-ján keresztül férhetnek hozzá a megosztásban lévő fájladatokhoz.

  • A Table Storage a strukturált adatkészleteket tárolja. A table storage egy NoSQL kulcsattribútum-adattár, amely gyors fejlesztést és nagy mennyiségű adat gyors elérését teszi lehetővé.

Relációs adatbázisok és NoSQL-adatbázisok. A külső adatbázisokhoz számos lehetőség közül választhat, például az SQL Server, a PostgreSQL, az Oracle vagy a NoSQL-adatbázisokhoz, például az Azure Cosmos DB-hez, a MongoDB-hez stb. Ezeket az adatbázisokat nem fogjuk magyarázni ennek az útmutatónak a részeként, mivel teljesen más témában vannak.