7 eset, amikor nem szabad használni a Dockert

A Docker egy játékváltó. De ez nem egy mindenki számára megfelelő megoldás.

Sok jó dolog van Dockerben. Csomagolja, szállítja és futtatja az alkalmazásokat könnyű, hordozható és önellátó konténeres eszközként. A Docker kiválóan alkalmas bármilyen méretű vállalkozások számára. Amikor egy kis csapatnál dolgozik egy kódon, az kiküszöböli a „de a gépemen működik” problémát. Eközben a vállalkozások a Docker segítségével megépíthetik az Agile szoftvert szállító csővezetékeket az új funkciók gyorsabb és biztonságosabb szállításához.

Beépített konténerrendszerével a Docker kiváló eszköz a felhőalapú számításhoz. A Docker Swarm viszont elősegíti a klaszterezést és a decentralizált kialakítást. Túl jól hangzik, hogy igaz legyen, igaz? Nos, még mindig számos olyan eset van, amikor nem szabad használni a Dockert. Itt van hét közülük.

ne használja a dokkolót

Nézzük végig ezeket egyenként.

Ne használja a Dockert, ha növelnie kell a sebességet

A Docker-tárolók kisebbek és kevesebb erőforrást igényelnek, mint egy szervert és adatbázist tartalmazó virtuális gép. Ugyanakkor a Docker annyi rendszererőforrást fog felhasználni, amennyit a gazdagép kernelütemezője megenged. Nem szabad elvárnia, hogy a Docker bármilyen módon felgyorsítsa az alkalmazásokat.

Sőt, Docker akár lassíthatja is. Ha dolgozik vele, akkor meg kell határoznia, hogy mennyi memóriát, processzort vagy blokkolt IO-t használhat a tároló. Ellenkező esetben, ha a kern észleli, hogy a gazdagép memóriája túl kevés a fontos rendszerfunkciók végrehajtásához, megkezdheti a fontos folyamatok megölését. Ha rossz folyamatot ölnek meg (beleértve magát a Dockert is), a rendszer instabil lesz.

Sajnos a Docker memóriabeállításai - a Docker démon memórián kívüli prioritása - nem oldják meg ezt a problémát. Ezzel szemben egy alkalmazás és az operációs rendszer közötti további réteg szintén sebességcsökkenést eredményezhet. Ez a csökkenés azonban jelentéktelen lesz. A Docker konténerek nincsenek teljesen elkülönítve, és nem tartalmaznak teljes operációs rendszert, mint bármelyik virtuális gép.

Ne használja a Dockert, ha elsőbbséget élvez a biztonság szempontjából

A Docker legnagyobb biztonsági előnye, hogy kisebb részekre bontja az alkalmazást. Ha az egyik alkatrész biztonsága veszélybe kerül, a többit nem érinti.

Míg a konténerekben lévő elszigetelt folyamatok jobb biztonságot ígérnek, minden konténer hozzáférést biztosít egyetlen gazdagép operációs rendszeréhez. Megkockáztathatja a Docker-tárolók hiányos elszigetelését. Bármely rosszindulatú kód hozzáférhet a számítógép memóriájához.

Népszerű gyakorlat, hogy sok konténert futtatnak egyetlen környezetben. Így teszi alkalmazását hajlamossá az erőforrás-visszaélés típusú támadásokra, hacsak nem korlátozza az erőforrástároló képességeit. A maximális hatékonyság és az elszigeteltség érdekében minden tartálynak egy meghatározott aggályos területet kell kezelnie.

Egy másik kérdés a Docker alapértelmezett konfigurációja - a felhasználók nincsenek névtérben. A névterek lehetővé teszik a szoftveres erőforrások számára, hogy csak akkor használhassanak más erőforrásokat, ha egy adott névtérhez tartoznak.

Az alkalmazások Dockerrel történő futtatása a Docker démon futtatását jelenti root jogosultságokkal. A Docker-tárolóból kitörő összes folyamatnak ugyanazok a jogosultságai lesznek a gazdagépen, mint a tárolóban. A tárolók belsejében nem privilegizált felhasználóként történő futtatása nem garantálja a biztonságot. Ez a hozzáadott vagy eltávolított képességektől függ. A Docker-tárolók feltörésének kockázatának csökkentése érdekében ne töltse le a használatra kész tárolókat nem megbízható forrásokból.

Ne használja a Dockert, ha asztali grafikus felhasználói felületet fejleszt

A Docker nem felel meg olyan alkalmazásoknak, amelyek gazdag felhasználói felületet igényelnek. A Docker főként konzolos alkalmazásokkal ellátott, elkülönített konténerekhez készült. A GUI-alapú alkalmazások nem jelentenek prioritást, támogatásuk az adott esettől és alkalmazástól függ. A Windows-tárolók Nano vagy Core Server alapúak - ez nem teszi lehetővé a felhasználók számára, hogy GUI-alapú felületet vagy Docker RDP-kiszolgálót indítsanak el a Docker-tárolóban.

Ennek ellenére továbbra is futtathatja a Python és a QT keretrendszerrel kifejlesztett GUI alapú alkalmazásokat egy Linux konténerben. Használhatja az X11 továbbítást is, de ez a megoldás kissé kínos.

Ne használja a Dockert, ha fel akarja világítani a fejlesztést és a hibakeresést

A Docker fejlesztők és fejlesztők számára készült. Környezetstabilitást biztosít: a fejlesztőgépen lévő tartály pontosan ugyanúgy fog működni a rendezés, a gyártás vagy bármely más környezetben. Ez kiküszöböli a különféle programverziók problémáját a különböző környezetekben.

A Docker segítségével könnyedén hozzáadhat új függőséget alkalmazásához. A csapat egyetlen fejlesztőjének sem kell megismételnie ezt a manipulációt a gépén. A konténerben minden fel fog működni, és az egész csapatnak el lesz osztva.

Ugyanakkor további beállításokat kell végrehajtania az alkalmazás kódolásához a Dockerben. Ezenkívül a Docker hibakeresésével konfigurálnia kell a naplók kimenetét és be kell állítania a hibakereső portokat. Előfordulhat, hogy konténerekben kell feltérképeznie az alkalmazások és szolgáltatások portjait. Tehát, ha bonyolult és unalmas telepítési folyamatod van, a Docker sokat segít neked. Ha egyszerű alkalmazásod van, az csak felesleges bonyolultságot ad.

Ne használja a Dockert, ha más operációs rendszert vagy kernelt kell használnia

Virtuális gépekkel a hipervizor elvonhat egy teljes eszközt. A Microsoft Azure használatával egyszerre futtathatja a Windows Server és a Linux Server mindkét példányát. A Docker image-hez ugyanakkora operációs rendszer szükséges, amelyhez létrehozták.

Van egy nagy adatbázis Docker konténerképekről - Docker Hub. Mégis, ha egy kép Linux Ubuntuban készült, akkor az csak pontosan ugyanazon az Ubuntun fut.

Ha egy alkalmazást fejlesztenek Windows rendszeren, de a gyártás Linux rendszeren fut, akkor nem tudja hatékonyan használni a Dockert. Néha könnyebb szervert beállítani, ha több statikus alkalmazás van.

Ne használja a Dockert, ha rengeteg értékes adatot tárol

Tervezés szerint az összes Docker-fájl egy tároló belsejében jön létre, és írható tárolórétegen tárolódik. Nehéz lehet kinyerni az adatokat a tárolóból, ha más folyamatra van szükség. Ezenkívül a tároló írható rétege kapcsolódik ahhoz a gazdagéphez, amelyen a tároló fut. Ha máshová kell helyeznie az adatokat, akkor nem teheti meg egyszerűen. Ráadásul a tárolóban tárolt összes adat örökre elvész, ha a tároló leáll.

Először meg kell gondolnia, hogyan mentse el adatait valahol másutt. Az adatok biztonságának megőrzéséhez a Docker alkalmazásban egy további eszközt - Docker Data Volumes - kell alkalmaznia. Ez a megoldás még mindig meglehetősen ügyetlen, és tovább kell fejleszteni.

Ne használja a Dockert, ha a legkönnyebben kezelhető technológiát keresi

A 2012-ben bemutatott Docker még mindig új technológia. Fejlesztőként előfordulhat, hogy rendszeresen frissítenie kell a Docker verzióit. Sajnos a visszamenőleges kompatibilitás nem garantált. Sőt, a dokumentáció elmarad a technológia fejlődésétől. Fejlesztőként magának kell kitalálnia néhány dolgot.

Ezenkívül a Docker által kínált megfigyelési lehetőségek meglehetősen gyengék. Gyors betekintést nyerhet néhány egyszerű statisztikába. Mégis, ha szeretne látni néhány fejlett felügyeleti funkciót, a Docker nem tud mit ajánlani.

Nagy és összetett alkalmazás esetén a Docker megvalósítása költségekkel jár. A sok konténer közötti kommunikáció kiépítése és fenntartása számos szerveren sok időt és erőfeszítést igényel. Van azonban egy hasznos eszköz, amely megkönnyíti a több tárolós Docker alkalmazásokkal való munkát - Docker Compose. A Docker Compose szolgáltatásokat, hálózatokat és köteteket egyetlen YAML fájlban határoz meg.

Mindazonáltal a Docker ökoszisztéma meglehetősen megtört - nem minden támogató edénytermék működik jól egymással. Minden termék mögött egy bizonyos vállalat vagy közösség áll. Az ezek közötti heves verseny a termékek inkompatibilitását eredményezi.

Összecsomagolás

A KeenEthics szakemberei szívesen dolgoznak a Dockerrel, és gyakran használják az alkalmazás fejlesztésére. Bizonyos hátrányok ellenére könnyedén használhatja az alkalmazásokat egymás mellett, elszigetelt tárolókban történő futtatásához és kezeléséhez.

Az alkalmazás telepítése olyan egyszerű lehet, mint egyetlen parancs futtatása -. A Docker tiszta és eredeti elszigetelési környezetet biztosít minden teszthez, ezáltal az automatizálási tesztek fontos és hasznos eszközévé válik.

A Docker funkciói előnyöket kínálnak a függőségkezelés és a biztonság szempontjából. Az olyan hasznos eszközökkel kiegészítve, mint a Docker Hub, a Docker Swarm és a Docker Compose, a Docker népszerű és felhasználóbarát megoldás.

A Docker összes előnye ellenére nem szabad használni minden egyes fejlesztett alkalmazás tárolásához.

Ne feledje: A Docker játékváltó. De ez nem egy mindenki számára megfelelő megoldás.

A Docker sem az egyetlen ilyen eszköz a piacon. A Docker alternatívái az rkt, amelyet „rakétának” ejtenek, Linux Containers vagy OpenVZ. Ezek mindegyike előnyeivel és hátrányaival meglehetősen hasonló a Dockerhez. A Docker növekvő népszerűségét és felhasználási arányát csak a vállalkozások döntése okozza annak elfogadására.

Mielőtt a következtetésekre térne át, érdemes használni a Dockert, vagy sem, tanulmányozza a projekt követelményeit. Beszéljen csapattársaival vagy társaival, és hagyja, hogy segítsenek eldönteni, mikor kell használni a Dockert, mikor nem szabad használni a konténereket, és hogy vajon ez a Docker-féle eset.

Akár tetszik, akár nem, ennek a technológiának van jövője. Vannak olyan fejlesztők és fejlesztési ügynökségek, akik utálják a Dockert, és megpróbálják kizárni azt az összes folyamatban lévő projektjükből. Ugyanakkor vannak olyan szakemberek, akik mindent konténereznek, mert Dockert csodaszernek tekintik. Talán nem szabad csatlakoznia egyik táborhoz sem. Maradjon pártatlan, maradjon objektív és döntsön egy adott helyzettől függően.

Van ötlete egy Docker-projekttel kapcsolatban?

Cégem, a KeenEthics egy tapasztalt webalkalmazások-fejlesztők csapata. Abban az esetben, ha ingyenes becslésre van szüksége egy hasonló projekthez, vegye fel bátran a kapcsolatot .

További hasonló cikkeket elolvashat a Keen blogomon. Engedje meg, hogy javasoljuk, olvassa el a Miért kell refaktorozni a kódot? vagy szoftverfejlesztési modellek magyarázata: Outsourcing vs outstaffing, Fix Price vs Time & Material?

PS

Ezenkívül szeretnék köszönetet mondani Alex Pletnovnak, aki társszerzővé tette ezt a cikket, valamint az olvasóknak, hogy a végére értek!

A KeenEthics blogon közzétett eredeti cikk itt található: 7 eset, amikor nem szabad használni a Dockert.