IT & Business blog Enlogit
Člen skupiny:

Docker - nástroj, který ulehčí život nejen vývojářům

Vložil/a Pavel K, 9 Duben, 2015 - 23:00

Pokud jste už slyšeli slovo Docker, asi to bylo ve spojení s tím, že je super, že vám velmi usnadní život a pomůže. Ale v čem?

Co se v tomto článku dozvíte?

  • Co je a není docker
  • Příklady použití
  • Pro koho je docker užitečný
  • Bezpečnost
  • Kdo ho používá

Docker je vlastně vytvořený standard pro spojení několika nástrojů, které v Linuxu již řadu let existují. Je to např. chroot obohacený o další vlastnosti kernelu jako SELinux, cgroups atd., samotný Docker daemon, který se stará o spouštění a správu konteinerů. Docker file, což je předpis toho, jak má daný kontejner vypadat.


Zdroj: www.redhat.com

Docker není nástupce virtualizace, ale nástroj, který můžete použít tam, kde není virtualizace úplně potřeba. Může pomoci, jak administrátorům, tak vývojářům. Výhodou oproti virtualizaci je fakt, že spuštění kontejneru s sebou nenese téměř žádné nároky na zdroje. Nevýhodou je absence vlastního jádra, ale ne vždy jej a přístup k HW potřebujete.

Klasický případ použití ze strany administátora může být použití pro web hosting. Pokud potřebujete více verzí PHP, stačí si vytvořit více kontejnerů a v každém z nich mít jinou verzi PHP, jinou konfiguraci webového serveru atd. Kontejneru poté přimountujete složku s kódy Vaší aplikace a vše funguje.

Vývojáři možná ulehčí život ještě více. Představte si, že máte aplikaci (když jsem zmiňoval PHP, tak u něj zůstaňme, ale samozřejmě můžete “dockerovat” cokoliv jiného) a potřebujete zjistit, zda s novou verzí PHP bude fungovat. Nebo zda Vaše aplikace bude fungovat s novou verzí nějakého modulu.

Jako vývojář nechcete moc řešit systém ve vašem notebooku. Potřebujete, aby fungoval rychle a dlouhodobě, abyste se mohli věnovat vyvíjení aplikace a ne reinstalacím. Jak asi takový systém bude vypadat, pokud do něj budete pořád instalovat nové a nové věci, byť jen kvůli minutovému otestování. Kvůli instalaci “nečeho” přestane fungovat “něco” jiného a místo toho, abyste se věnovali vývoji aplikace, budete půl dne (nebo déle) řešit, aby vše zase fungovalo. Řešením je vytvářet si kontejnery s různými verzemi softwaru a aplikací. Tím pádem zůstane hostitelský systém netknutý.

Další výhoda bude při testování. K tomu abyste plně otestovali aplikaci budete potřebovat např. web server, databázový server a třeba cache. Pokud byste všechno spouštěli ve VM, tak byste mohli mít problémy se zdroji (RAM, CPU, kapacita HDD). Navíc byste se museli starat o systém dané VM - (museli byste ho nainstalovat a nakonfigurovat). Toto všechno s Dockerem odpadne. Spustíte si během pár sekund potřebné kontejnery, otestujete a zase je vypnete a nebo úplně smažete. Navíc pokud budete potřebovat aplikaci předat dál, vytvoříte kontejner i s aplikací a celý ho předáte. Budete tak mít jistotu, že až dojde k jeho spuštění, bude aplikace funkční. A nebude už docházet k problémům typu: “Mně to fungovalo. Jaktože to u Tebe na počítači nejde?”

Díky těmto “dvěma stranám” tedy vývojářům a administrátorům, Docker nachází své uplatnění i v CI (Continuous Integration). Integrovat ho můžete pomocí pluginu do Jenkins. Podporu nabízí i Bamboo od společnosti Atlassian.

Docker je poměrně nová technologie a velmi rychle se vyvíjí. V tuto chvíli je k dispozici ve verzi 1.5. Při nasazování v produkci bych proto byl opatrný. Jsou známy případy, kdy se podařilo útočníkovi z kontejneru “uniknout” pod root účtem do hostitelského systému. Nástroje pro práci s Dockerem jsou také velmi mladé a ještě není vše vyladěné tak, jako tomu je u technologií, které fungují již řadu let.

Problém s bezpečností může pomoci vyřešit použití SELinuxu nebo AppArmoru, ale zde můžete narazit na problém s použitým filesystémem pro Docker. Některé např. se SElinuxem nespolupracují, jiné ano, ale jsou výrazně pomalejší. A ani spolupráce se systémd není v tuto chvíli dokonalá.

Docker je určitě užitečný nástroj a stojí za to se o něj zajímat. O tom svědčí zájem a nasazení u velkých společností jako je Google nebo Spotify. Ale při nasazení do produkce bych dbal na důkladné testování a přípravu.

logo Docker

Pavel K
není

Pavel K's blogPřidat komentář

Kontaktujte nás

IT & Business blog Enlogit
© Enlogit s.r.o. 2012
Víme, že je to otrava, ale musíme Vás informovat, že tento web používá k poskytování služeb soubory cookie. Používáním tohoto webu s tím souhlasíte. Další informace