A fejlesztési és üzemeltetési csoportok a kezdetektől fogva foglalkoznak a szoftveres környezetek összetettségével. Gyakori probléma, amikor az egyik környezetben működő kód nem működik a másikban.
A dokkoló és a csavargó egyaránt segít kiszámítható és megismételhető fejlesztői környezetek létrehozásában. A dokkoló azonban konténertechnológiát, míg a csavargó virtuális gépeket használ e cél elérése érdekében. A Docker és a Vagrant erősségeinek és gyengeségeinek megértése segít a fejlesztőknek összekeverni ezeket az eszközöket a kívánt eredmények elérése érdekében.
Kezdjük először az alapul szolgáló technológiákkal.
Virtuális gép
A virtuális gép (VM) fizikai számítógépet utánoz. Saját teljes operációs rendszerrel és erőforrás-elosztással rendelkezik. A gazdagép biztosítja a szükséges fizikai erőforrásokat, de a virtualizált környezet független gépként működik, saját BIOS-szal, CPU-val, tárolóval és hálózati adapterekkel.
Annak ellenére, hogy a VMware manapság a modern VM technológiáról a leghíresebb, a virtuális gép ötlete már régóta létezik.
1965-ben az IBM Yorktown Research Center-nek szüksége volt arra, hogy felmérje a különböző informatikai ötletek hatékonyságát. A kutatócsoport váltani szeretett volna a funkciók között és megmérni az eredményeket. A csapat kidolgozott egy sémát, amely egyetlen gépet osztott fel kisebb partíciókra. A kisebb partíciók kezelnék a saját erőforrásaikat. Kis virtuális gépek lennének.
A VM ötlete sikeres volt. Az IBM megkezdte az operációs rendszerek gyártását virtuális gépek alapján. Az IBM System 370 (S / 370) és az IBM System 390 (S / 390), mind az IBM VM / ESA alapú rendszerek, népszerűvé vált a vállalkozások és az egyetemek körében, mert lehetővé tették az intézmények számára, hogy hagyják felhasználóikat megosztani számítási erőforrásaikban anélkül, hogy befolyásolnák egymás környezetét. Az ötlet segített a Unix operációs rendszer és a Java programozási nyelv létrehozásában is.
A modern virtuális gépek hipervizorokon futnak. A hypervisors a virtuális gépek létrehozásáért és végrehajtásáért felelős szoftver, firmware vagy hardver. Nagyon sok hipervizor elérhető a piacon. A KVM, a Red Hat Enterprise Virtualization (RHEV), a XenServer, a Microsoft Hyper-V és a VMware vSphere / ESXi a kiemelkedő szereplők.
Ma a virtuális gépek ösztönözték a felhőalapú számítástechnika növekedését. Az Amazon AWS, a Microsoft Azure, a Google Cloud, a Digital Ocean és más felhőcégek nagyban függnek a virtualizációs technológiától.
Konténerek
A konténerek virtualizációt hoznak létre az operációs rendszer szintjén. Futtatható szoftvercsomagként működnek, amely izolálja az alkalmazásokat a környező környezettől. A csomag belsejében egy tároló rendelkezik a szükséges tulajdonságokkal, például kóddal, futási idővel, rendszerkönyvtárakkal és eszközökkel, hogy az alkalmazást el lehessen különíteni a külső befolyástól. A gazdagép operációs rendszerén fut. A konténerek lehetőség szerint megosztják a könyvtárakat és a bináris fájlokat, és csak a feltétlenül szükséges erőforrásokat különítik el.
1979-ben a „chroot” rendszerhívások elkülöníthetik a folyamatokat a Unix számára. Ez volt a konténer ötlet első magja. A korai konténertechnológia a FreeBSD Jails alkalmazásával indult 2000-ben. Egy évvel később a Linux VServer lehetővé tette több Linux gép futtatását egyetlen állomáson. 2004-ben az Oracle Solaris Zones hasonló funkciókat nyújtott, mint a FreeBSD Jails. 2006-2007-ben a Google kifejlesztette a Process Containert, majd beolvasztotta a Linux kernelbe. A Linux Containers (LXC) 2008-ban jött létre, hogy kihasználja a Linux csoportjainak és névtereinek előnyeit. 2013-ban az LXC ötletek ötvözésével jött létre a Docker. Ezenkívül eszközöket adott hozzá a konténerek képeinek egyszerű elkészítéséhez és visszakereséséhez.
Dokkmunkás
A Docker egy LXC alapú nyílt forráskódú konténertechnológia. Népszerű, mert megkönnyíti az alkalmazások önálló környezetben történő létrehozását, futtatását és telepítését. A Docker nem hoz létre olyan operációs rendszert, mint egy virtuális gép. Ehelyett a gazdagép operációs rendszerének kernelét használja, és csak az alkalmazáshoz és a szükséges könyvtárakhoz hoz létre virtualizációt. Ez a megközelítés sokkal könnyebbé teszi, mint a virtuális gépek.
A Docker konténerek a Docker Images alkalmazásból készülnek. A Docker Images gépek pillanatképének tekinthető. A felhasználók egyszerűen elindíthatnak egy tárolót egy képből. A képek rétegként jönnek létre. Tegyük fel, hogy egy fejlesztőcsapatnak szüksége van egy Apache és Python tárolóra a Linux bizonyos verzióira. A fejlesztő letölthet egy Linux képet a Docker Hubról, elindíthat egy tárolót, telepítheti az Apache és a Python programot, létrehozhat egy új képet a tárolóból, és megoszthatja azt a képet. A csapat többi tagjának nem kell ugyanazt a telepítést végrehajtania. Segít fenntartani a mindenki számára állandó környezetet.
A Docker szkripteket és több tárolós alkalmazásokat is támogat. A felhasználók szöveges Dockerfile segítségével meghatározhatják a követelményeket, majd a Docker Compose segítségével tárolókat készíthetnek. Az Apache / Python / Linux szerver létrehozásának fenti példája szintén elérhető ezzel a folyamattal. A Docker Compose használatával a csapatoknak csak a Dockerfile fájlt kell megosztaniuk ugyanazon környezet létrehozása érdekében.
A Docker speciálisabb eszközökkel rendelkezik az összetett feladatokhoz. A Docker Swarm segíti a nagyméretű dokkoló-telepítések összehangolását.
Csavargó
A Vagrant egy nyílt forráskódú eszköz, amely segít virtuális gépek létrehozásában és karbantartásában. Működik a VirtualBox, a VMWare, az AWS és más szolgáltatókkal.
A Vagrant leegyszerűsíti a virtuális gépek kezelését. A Vagrantfile használatával a fejlesztők meghatározhatják a virtuális gép tulajdonságait, például az operációs rendszert, a szoftver telepítéseket és egyebeket. A szöveges Vagrantfile verzióvezérléssel osztható meg, és a szükséges gép elindítható egy egyszerű paranccsal, mint például a „vagrant up”. A felhasználók ezután bejelentkezhetnek a gépbe, mint egy fizikai szerver.
Mikor kell használni a Dockert vagy a Vagrant
A Docker vagy a Vagrant használata gyakran a konténerek vagy virtuális gépek szükségességére vezethető vissza. Íme néhány hasonlóság és különbség a Docker és a Vagrant között a használat szempontjából:
Hasonlóságok
Mind a Docker, mind a Vagrant könnyen konfigurálható környezetekkel rendelkezik, amelyek parancsfájlok segítségével vezérelhetők. Felhőbarátak is.
Különbségek
A Vagrant virtuális gép biztosítja a kernel alapú biztonsági szétválasztást. Az elkülönítés miatt a virtuális gépek kevésbé kockázatosak, mint a konténerek. De a Docker konténerek nagyon könnyűek. Kevesebb erőforrást használnak és gyors a kivitelezésük. Tehát sokkal több tárolóval rendelkezhet egyetlen gazdagépen, mint virtuális gépeken. A konténerek indítása és leállítása szinte azonnal zajlik a virtuális gépekhez képest. A virtuális gépek a teljes BIOS és az operációs rendszer indítási ciklusán mennek keresztül.
A virtuális gép biztonsági elkülönítése a virtuális gép hibáját önállóbbá teszi. Másrészt a konténerek megosztják az erőforrásokat, és lépcsőzetes összeomlási hatást fejthetnek ki. A konténer biztonsági fenyegetései elérhetik a gazdagép operációs rendszer kerneljét is.
A kivitelezés sebessége és a konténerek könnyű talajnyoma azonban nagyon vonzóvá teszi a Dockert a fejlődés szempontjából. Mikroszolgáltatási architektúrával a konténerek jól teljesíthetnek, mert a kockázati tényezőket a mikroszolgáltatások alkalmazásával enyhítik. Továbbá haladnak a Docker biztonságosabbá tétele érdekében minden nap.
Következtetés
A Docker és a Vagrant egyaránt hasznos technológiák, amelyek segíthetik a fejlesztőket a termelékenység javításában. Ha az alkalmazások biztonsága aggodalomra ad okot, akkor a Vagrant és a virtuális gépek használata jó ötlet lehet. A gyors fejlődés és megosztás érdekében a Docker előnyt nyújt. A legtöbb csapat mindkettőt használja a zökkenőmentes működéshez.
Referenciák:
- http: // rhelblog.piros kalap.com / 2015/08/28 / a konténerek története /
- http: // www.virtualizációs szoftver.com / top-5-enterprise-type-1-hypervisors /
- https: // blog.dokkmunkás.com / 2016/04 / fizikai-virtuális-tároló-telepítés /
- https: // blog.dokkmunkás.com / 2016/05 / vm-or-containers /
- https: // tartalom.döntő.io / infographics / moments-in-container-history
- https: // finomagyak.com / vagrant-docker-wordpress-development /
- https: // docs.dokkmunkás.com / compose /
- https: // en.wikipédia.org / wiki / Idősor__virtualizáció_fejlesztés
- https: // lifehacker.com / 5204434 / a-kezdőknek szóló útmutató a virtuális gépek létrehozásához a virtuális fiókkal
- https: // közepes.freecodecamp.org / a-kezdőbarát-bevezetés a konténerekhez-vms-and-docker-79a9e3e119b
- https: // opensource.com / resources / what-docker
- https: // scaleyourcode.com / interjúk / interjú / 9
- https: // stackoverflow.com / questions / 16647069 / kell-e-használjak-e egy csavargó-vagy-dokkolót egy-egy elszigetelt környezet létrehozásához
- https: // www.Fejlesztői csapat.space / blog / dokkoló-vs-csavargó-melyik jobb a fejlesztéshez /
- https: // www.dokkmunkás.com / what-container
- https: // www.következőplatform.com / 2015/08/06 / container-versus-virtual-machines-when-to-use-each-one-and-why /
- https: // www.csavargó.com / intro / vs / docker.html
- LaraChat Live - 26. rész - Docker v.s. Kóbor [https: // www.Youtube.com / watch?v = onD5ti6K7TY]
- Csavargó vs Docker [https: // www.Youtube.com / watch?v = cTbHa4Mj_v8]
- Csavargó vs Docker? [https: // www.Youtube.com / watch?v = 9tDW5OyCY2c]