Egy ideje ismerkedem a Dockerrel, de nem igazán sikerült dűlőre jutnom vele, hogy igazából miért is lenne nekem jó.
Az első problémám, hogy konfiguráció menedzsment eszközökkel (Puppet, SaltStack, etc) ugyanúgy kényelmesen tudom kezelni a környezeteket akár Dockerrel. A második pedig, hogy vannak vele IO problémák, ha az alkalmazásom például használ MySQL-t/MariaDB-t, akkor érzékelhetően visszaesik a performancia, annak így pedig nem látom értelmét, hogy az alkalmazás környezetének egy részét konténerekbe pakolom, a másik fele meg marad a hoszt gépen.
Ha valakinek van mélyrehatóbb tapasztalata a témában, azt szívesen meghallgatnám.
Előre is köszönöm!
- 3328 megtekintés
Hozzászólások
A dockert arra szánták, hogy a szervereiden futó alkalmazásokat el tudd szeparálni egymástól. Pl.: Apache, Smtp. A lényeg, hogy ha feltörik az egyiket, akkor csak az egy szolgáltatást tudtak megtámadni. Másik oldalról meg támadás esetén kuka a konténer és indítasz másikat még ki nem javítod a hibát.Az adatbázis részéről nincs tapasztalatom.
- A hozzászóláshoz be kell jelentkezni
Ez így egyáltalán nem igaz, bár kétségtelen, hogy elég általános vélekedés.
Olvasnivaló a témában:
- A hozzászóláshoz be kell jelentkezni
És az SMTP-s leveleim hol vannak? Az apache www mappáját hova rakod?
- A hozzászóláshoz be kell jelentkezni
Az SMTP (nem a POP3/IMAP szerver, csak az SMTP!) tök jól elvan egy konténerben. Nem kell neki tárolnia tartósan semmit, ha van queue annak a tartalmát bukhatod, de megoldható, hogy csak üres queue-val dobd el a konténert. Sima ügy.
Az apache is teljesen okés, a konténerbe rakod a www tartalmát. Ha valamit változtatni akarsz a www tartalmán, akkor új konténert csinálsz és a régit kicseréled az újra. Ez is sima ügy.
Ezek speciel megoldható példák és még jók is. Persze vannak nehézségek (pl. hova logoljanak ezek a démonok), de megoldhatóak.
- A hozzászóláshoz be kell jelentkezni
Azért elég nagy luxus egy komplett webszerveres "gépet" (konténer) újrabuildelni, mert 1-2 dolog megváltozott a webes tartalomban...
- A hozzászóláshoz be kell jelentkezni
A Docker filozófiájában ez így működik. Ne abban gondolkodj, hogy van egy webszerveres géped, hanem hogy van ezer ugyanolyan webszerveres géped és értelmesebben fog hangzani a dolog.
- A hozzászóláshoz be kell jelentkezni
Volt 100+ gépem, és simán ment az összesnek/egy csoportnak/egy gépnek a tetszőleges átkonfigurálása, átállítása más feladatra, meg tudtam mondani hogy pl. redis-ből melyik verzióval jöjjön föl a kiszolgáló, legyen-e mellette például nginx vagy sem, stb.
Igaz ez még fizikai gépekkel működött, de vm-ekre is össze lett rakva hasonló (nem tudom, hogy mi lett a sorsa annak a megoldásnak, mert eljöttem attól a cégtől) - igaz, ezekben az OS mindenütt azonos alaprendszert takart (bár simán lehetett volna tetszőleges számú különböző alaprendszer is), az egyes alkalmazások (patch-ek) viszont "önhordóak" voltak egy-egy saját, read-only(!) könyvtáron belül, az adataikat egy rw-ben csatolt külön területen tárolva.
- A hozzászóláshoz be kell jelentkezni
Azaz kézzel emuláltad az UnionFS-t, ennél a Docker egyszerűbb :-)
- A hozzászóláshoz be kell jelentkezni
Az első esetben még nem volt unionfs, a másodikban meg a fene tudja, hogy mit használtam (volna), majd megnézem :-P
- A hozzászóláshoz be kell jelentkezni
POP3, IMAP-ra gondoltam, nem SMPT-re. De látom, helyettem helyre tetted...
- A hozzászóláshoz be kell jelentkezni
A Docker igazi előnyei csak bizonyos típusú alkalmazásoknál jönnek elő, ott is csak akkor, ha bizonyos típusú munkafolyamatok mentén szerveződik a fejlesztés és az üzemeltetés.
Mire gondolok pontosabban?
Az alkalmazás legyen horizontálisan skálázható, működjön úgy, hogy sok kicsi, önálló gépre szétosztva működőképes, illetve lehetőségek szerint a node-ok számának növelésével közel lineárisan növekedjen az áteresztőképesség. Ezzel a klasszikus egygépes alkalmazások marha nagy része kiesik, nem optimális Docker-ben futtatni (bár lehet, de minek).
Az alkalmazás egy-egy node-ja legyen állapotmentes, ne akarjon semmilyen adatot önállóan tárolni. Ezzel a klasszikus relációs adatbázisok, mint a MySQL vagy az Oracle szépen kiesnek, ezeket sem célszerű Docker-ben futtatni (bár szintén lehet).
(Megjegyzés: fejlesztői környezetben, ahol nem zavar, ha az adatbázisodat időnként egyszerűen eldobod, ezek a limitációk úgymond nem számítanak, ezért ott lehet érdemes ilyenekkel szívózni, csak éles rendszerre ne így akard átvinni a dolgokat.)
Az alkalmazást ne zavarja, ha egy-egy node-ját "csak úgy" kikapcsolod és beraksz a helyére egy újat. Kiesik minden, ami nem áll le/indul el legfeljebb pár másodperc alatt, ezekre megint nem ideális a Docker (persze működhet).
A fejlesztési folyamat legyen olyan, hogy az artifact, ami eredményeképpen létrejön, hozzon létre egy új Docker image-et. Ha .war fájlokat kell belekalapálni a Docker-be telepített JBoss-ba, akkor a Docker inkább hátráltatni fog, nem segíteni. Ez egy csomó üzemeltetéssel kapcsolatos terhet ró a fejlesztőkre, amit sokszor inkább nem kérnének, de emiatt bukják a Docker előnyeinek nem-fejlesztéssel-kapcsolatos részét.
Az üzemeltetés legyen olyan, hogy elfogadja, a programok hibásak, és néha jobban megéri egyszerűen újraindítani őket, mint kivizsgálni hogy mi volt a hiba és megoldani azt. Ez nagyon-nagyon nem intuitív szokott lenni az üzemeltetők körében.
Mindemellett az üzemeltetés ne átadott fekete dobozként kezelje a fejlesztések eredményeit, hanem értse, hogy minek kellene történnie bennük, illetve mi történik bennük. Ennek az első felét általában az üzemeltetők nem kérik, a második fele kapcsán meg eléggé gyerekcipőben jár még a Docker.
Szóval akkor mégis, mire jó? Mit lehetne futtatni benne?
Arra jó, hogy egységes kereteket adjon a fejlesztésnek és az üzemeltetésnek, hogy közelebb hozza őket egymáshoz, bizonyos aspektusokat standardizáljon.
Arra is jó, hogy a nagyon kellemes tulajdonságokkal rendelkező alkalmazások (horizontálisan skálázható, állapotmentes, adatokat nem tároló, eldobható/cserélhető node-okból álló, jól monitorozható stb.) alkalmazások egy ideális környezetben fussanak. Ilyen alkalmazás nem sok van, de egy elég jó, erős példa egy webes alkalmazás, amelynek a frontendje állapotot nem tárol, a backendje pedig valami jófajta NoSQL adatbázis.
Ehhez tök jó a Docker. Ritka az ilyesmi...
- A hozzászóláshoz be kell jelentkezni
"Szóval akkor mégis, mire jó? Mit lehetne futtatni benne?"
Én is sokat agyaltam rajta. Egy erőltetett példát találtam:
- Adatbázist az OP adja
- Apache-ot az OP csinálja
- A WWW mappát, benne egy webes alkalmazással Dockerben adom át az ügyfélnek.
- Verziókövetés úgy megy, hogy új docker tölthető le.
Kicsit erőltetett. Gombhoz a kabátot...
- A hozzászóláshoz be kell jelentkezni
+1, de inkább ott van előnye, ahol a "fejlesztő" az adott rendszerben elérhető komponenseknél korszerűbbet/újabbat/mást szeretne - azt szépen odacsomagolja a vackai mellé, és kész.
Az, hogy egy konténerben milyen komponensek vannak, azoknak a frissítése hogyan viszonyul a futtató OS-ben lévő motyókhoz, meg úgy általában kinek a felelőssége naprakészen tartani biztonsági szempontból az egész kócerájt... Nos, ez még eléggé képlékeny, mondhatni éles üzemi körülmények között nem biztos, hogy szeretnék ilyen "statikusra buildelt" lomot látni...
- A hozzászóláshoz be kell jelentkezni
Személy szerint látok benne fantáziát, bár még productionban nem használjuk, de szándékunkban áll elsősorban webes alkalmazásoknál. Jelenleg Openvz + SaltStack a preferált környezet.
Gyakorlatilag a docker = openvz + provisioning + néhány dokumentált API és automatizmus lxc alapokon (szemben az openvz-vel, ami nincs a hivatalos kernelfában).
Először is a konténerek eldobása nem szükségszerű, de van helyzet amikor ez hasznos funkció...
Docker előnye a szabványosodás, ezáltal más által készített (preferáltan a hivatalos kiadók) alkalmazások interfészelhetők egymással illetve könnyen lehet építeni a más munkájára, s csak a hozzáadott értékkel kell foglalkozni.
Szerintem az alábbiak a kulcspontok (hangsúlyozom mindent meg lehet oldani kézzel, de az egyszerűség, szabványosítás és persze a hype a lényeg szerintem -utóbbi miatt sok okos ember foglalkozik vele így még jobbá válik-):
- host egy vagy több mappája beadható a guest-be, mintha az övé lenne, így az adatok valójában a hoston vannak... ezáltal bármikor kicserélhető is (pl ubuntu -> centos váltás kell, hogy ugyan az a verzió maradjon és legyen security frissítés az adott libraryhoz... stb)
- reláció hozható létre (név + portok átadása környezeti változókban) egy vagy több konténer között így bonyolult struktúra leképezhető ezáltal (legyen egy vagy több gépen futó megoldás mögötte) -tipikusan több különböző verziójú, fejlesztésű alkalmazások interfészelése
- előzőhöz tartozóan környezetek könnyű létrehozása/törlése (teszt környezet, fejlesztői környezet, hiba vadászásához környezet stb)
- könnyű csere lehetősége (megfelelő tervezés esetén)
docker szemlélete elsősorban alkalmazás orientált... azaz nem az a lényeg, hogy fusson az operációs rendszer sok alkalmazással (valamint milyen oprendszer fut) és majd azon elindít egy kiemelt alkalmazást, hanem hogy a futtatni kívánt lehetőleg egy alkalmazás fusson, mindegy min és hogyan, csak szabályzottan legyen az alkalmazáshoz az interfész (valamilyen hálózati porton keresztül)
Ezért is látom első sorban a hasznosítási lehetőségeit hálózati alkalmazásoknál pl moduláris webalkalmazások...
- A hozzászóláshoz be kell jelentkezni
Miert kellene ujra generalni a Docker image-t, ha valtoztatni kell az adaton? Dinamikus adatot erdemes a hoston tarolni, mig minden szoftvert, konfiguraciot Docker-ben. Pl Java War is mehet kulso volume-ba, nem kell miatta ujrageneralni semmit.
https://docs.docker.com/userguide/dockervolumes/
Ajanlom elolvasasra a -v kapcsolot.
MySQL is mukodik igy, amig csak egy Docker hasznalja. Az elony, hogy mindenhol ugyanaz a verzio lesz MySQL-bol. Ami miatt lassu lehetett a MySQL az a konfiguracio a host-hoz kepest, elvileg hoznia kell a nativ teljesitmenyt: minimalis a veszteseg az UFS miatt.
- A hozzászóláshoz be kell jelentkezni
Tudom, hogy lehet ilyeneket művelni, de az ilyen adattárolással a hostodat teszed nem-skálázódó elemmé a rendszeredben. Ismét csak lehet ilyet csinálni, de nem az, amire a Docker igazán való. Szerintem.
- A hozzászóláshoz be kell jelentkezni
Az üzemeltetés legyen olyan, hogy elfogadja, a programok hibásak, és néha jobban megéri egyszerűen újraindítani őket, mint kivizsgálni hogy mi volt a hiba és megoldani azt.
Mindemellett az üzemeltetés ne átadott fekete dobozként kezelje a fejlesztések eredményeit, hanem értse, hogy minek kellene történnie bennük, illetve mi történik bennük.
a Docker hasznalata vagy mellozese szempontjabol ugyan tokmindegy, nem is ertem, hogy kerult a felsorolasba, de fontosnak tartom megjegyezni, hogy ezek egymasnak ellentmondo viselkedesmintak, amik rengeteg kart okoznak es olyan helyeken szoktak megjelenni, ahol a fejlesztok felelosseg nelkul villazzak at a kodot a keritesen.
- A hozzászóláshoz be kell jelentkezni
Az első az incidenskezelésre (van egy hiba, meg kell oldani) vonatkozik, a második a problémakezelésre (van egy általában előforduló probléma vagy tendencia, amivel kezdeni kell valamit). Köszi, hogy kiszúrtad :-)
- A hozzászóláshoz be kell jelentkezni
ertem, mire gondolsz, csak meg mukodni nem lattam sosem:)
- A hozzászóláshoz be kell jelentkezni
Olyan helyet keress, ahol van SRE funkció (és nem azért hívják az egyik üzemeltetőt így, mert a Google is így csinálja), ott láthatsz ilyesmit :-)
- A hozzászóláshoz be kell jelentkezni
igazad van, en nem voltam egyertelmu. az uzemeltetoktol nem varhatod el, hogy ne erdekelje oket, ha valami lerohad, masreszt meg ne kezeljek fekete dobozkent. pontosabban elvarhatod, csak nem megy.
A http://www.infoq.com/articles/devops-team-topologies oldalrol emelnek ki ket reszletet:
The SRE team is willing to take on all Production responsibility (on-call, incident response, etc.) as long as stringent operational criteria are met by the software produced by the Dev team.
es
suitability: organizations with a high degree of maturity or rigorousness with respect to operational excellence
ahol van SRE, ott sem az SRE miatt mukodnek ezek a dolgok, hanem mert a fejlesztok es uzemeltetok kozti "szerzodes" jol van definialva.
- A hozzászóláshoz be kell jelentkezni
Így van, tök jól látod.
- A hozzászóláshoz be kell jelentkezni
Nekem az jött le, hogy...
Nézzük ezt a 3 réteget: OS->futtatókörnyezet->alkalmazás
Ha két alkalmazást akarsz futtatni, amiknek eltérő (akár egymást kölcsönösen kizáró) futtatókörnyezet kell, akkor azt gondolhatnád, hogy több OS példány kell, lehet pl. virtualizálni. Nagy divat ez, például SharePoint telepítés arról szól, hogy telepítesz egy tucat szervert, X darabon fut egy frontend IIS (és más semmi), Y darabon fut egy caching szerver (és más semmi), darabon MSSQL (és más semmi), stb. Ebben elég sok az erőforráspazarlás.
És akkor jön a konténer, ami eggyel fentebb, a futtatókörnyezet szintjén vág. Kicsit olyan, mint a virtualizálás, de nem az egész OS-t virtualizálja, kevesebbet eszik, de az alkalmazásnak mindegy, hogy mi fut alatta. Plusz még annyi előnye van, hogy idejében megfogták és szabványosították.
Van olyan (ritkán), hogy egy SW gyártó egy teljes VM image-et ad oda neked, hogy tessék, ez itt a SW/appliance/akármi. Ez egy fekete doboz, vagy hozzáférsz és tudod frissíteni a benne levő OS-t, vagy nem, túl nagy a mérete, sok erőforrást eszik, stb. Egy konténeres alkalmazást több praktikus okból könnyebben lehet terjeszteni.
- A hozzászóláshoz be kell jelentkezni
És rossz esetben egy adott funkcionalitást megvalósító komponensből m darab konténer esetén m+1 darab van a rendszerben - mert az alap OS-ben is lehet más verzió. Tartsd naprakész állapotban a motyót... Ha egy libet le akarok cserélni a konténerben, akkor buildeljem újra, dobjam ki a régit, indítsam el az újat... Ha egy példány valósítja meg az adott funkciót, akkor príma módon szolgáltatáskiesés minden frissítés...
- A hozzászóláshoz be kell jelentkezni
Ezt a lib frissítés miatti szolgáltatáskiesést egy példány esetén nem értem. Ennek mi köze a konténeresdihez? A libet a futó progi alatt nem tudom kicserélni, hiszen épp használva van, hiába települt az új. Ha jól értem, a konténeren belüli telepítés (pl. yum/apt-get) után egy docker commit (+esetleg push), valamint stop és run kell az újraindításhoz. Ez miben más, mint VM-ben vagy fizikai vason újraindítani a cuccot?
- A hozzászóláshoz be kell jelentkezni
Egy ideje ismerkedem a Dockerrel, de nem igazán sikerült dűlőre jutnom vele, hogy igazából miért is lenne nekem jó.
akkor talan erdemes lenne a docker oldalan a bemutatkozo rizsat elolvasni...
--
"nem tárgyszerűen nézem a dolgot, hanem a vádló szerepéből. Sok bosszúságot okoztak, örülnék ha megbüntetnék őket - tudom gyarló dolog, de hát nem vagyok tökéletes." (BehringerZoltan)
- A hozzászóláshoz be kell jelentkezni
Mindig azt szoktam mondani, hogy ha valakiben felmerul a kerdes, hogy miert is jo neki a Docker, akkor 99.99% esellyel nem jo neki a Docker.
Hatalmas hype van korulotte (ld. Gartner Hype Cycle), rengeteg eszkoz hianyzik ahhoz, hogy normalisan lehessen hasznalni, es az uzleti igenyek nagy reszere nem ez a megfelelo megoldas. Weboldalakra, webalkalmazasokra egy mikroszkoppal merheto reteget kiveve nem tulzottan alkalmas. Ha hatalmas "felhos" alkalmazasokat irsz, ahol fel-le skalazol a mindenfele komponensekbol, nincs permanensen igenyelt darabszam, akkor lehet ilyesmivel jatszani.
Jo pelda lenne erre pl egy build cluster, ahol a kulonbozo jobtipusoknak kulonbozo fele Docker containerek indulnak es minden job egy-egy containerben fut izolalva. De ehhez kell egy scheduler, ami megalmodja, hogy mikor mibol mennyi kell, stb stb. Ez nem annyira trivialis.
--
Pásztor János
Sole Proprietor @ Opsbears
Development Lead @ IXOLIT
- A hozzászóláshoz be kell jelentkezni
Miért nem jó egyszerűen csak VM-ek lecserélésére? Csak nem elég kiforrott vagy valami elvi gond van vele?
- A hozzászóláshoz be kell jelentkezni
Mert a Docker nem egy virtualizacios technologia, hanem egy frontend mar letezo virtualizaciok folott (pl. LXC). Egy csomo minden amit egy statikus VM-tol elvarsz, nem teljesul a Dockernel. Igy peldaul a statikus IP cim kiosztast vagy a fix hostneveket ugy kell beletuszkolni kulon. Ha meg statikus VM-nek hasznalod, akkor mi ertelme Dockert hasznalni? Hasznalj kozvetlenul LXC-t vagy KVM-et vagy amit szeretnel. Semmi elonye nem lesz a Dockernek.
--
Pásztor János
Sole Proprietor @ Opsbears
Development Lead @ IXOLIT
- A hozzászóláshoz be kell jelentkezni
"Ha meg statikus VM-nek hasznalod, akkor mi ertelme Dockert hasznalni?"
Nekem ezek a tippeim: Sokkal olcsóbb üzemeltetni (1 kernel példány, nincs virtualizáció). Két VM lassabban kommunikál, mint 2 konténer a kevesebb TCP/IP stack miatt. Kevés helyet foglal (az image-ek a rétegelés miatt csak egyszer vannak fizikailag jelen, így pl. két CentOS alapú image csak 1 CentOS-t tartalmaz.) Gyors újraindítani. A commit/push/pull miatt könnyű karbantartani.
De lehet, hogy tévedek, nincs gyakorlati tapasztalatom.
- A hozzászóláshoz be kell jelentkezni
Sokkal kevesebb erőforrást használ egy Docker, mint egy önálló VM. A VM-nek kell "dedikált" CPU és RAM, a Docker pedig osztozik.
Egy 4GB RAM-mal szerelt Ubuntu is képes 30-50 docker-t futtatni, míg VM-ből talán az erőforráspazarló VirtualBox fut el rajta, abban max 2 VM.
- A hozzászóláshoz be kell jelentkezni
Fu, nagy itt a keveres. Mint irtam, a Docker nem egy onallo virtualizacios technologia, csak egy frontend letezo technologiak ele. Defaultbol (!) a Linux kernelbe epitett LXC tamogatast hasznalja, de kepes mas virtualizacios technologiat is hasznalni.
Ha csak arra akarod hasznalni, hogy osztozz eroforrasokon, az LXC pont ezt csinalja, a Docker sajatos mukodese nelkul.
--
Pásztor János
Sole Proprietor @ Opsbears
Development Lead @ IXOLIT
- A hozzászóláshoz be kell jelentkezni
"Docker nem egy onallo virtualizacios technologia"
Igen, eddig azért eljutottam. Nagyjából tudom, mi az az LXC, namespaces, cgroups.
"de kepes mas virtualizacios technologiat is hasznalni."
Képes vagy csak képes lenne, ha lenne más is?
Viszont az alap kérdés nem az volt, hogy a Docker front-end-e vagy sem, hanem az, hogy mi a haszna úgy alapvetően a konténeresdinek. Erre próbáltam pár lehetséges választ találni, nyilván megfelelő tapasztalat híján nem feltétlenül sikerült.
- A hozzászóláshoz be kell jelentkezni
Kepes. Vannak mindenfele konnektorok hozza. Hogy mennyire mukodnek, azt nem tudom, en csak LXC-vel teszteltem, de nem voltam hasra esve tole.
Mi haszna a konteneresdinek? - Gyk minden alkalmazasnak indithatsz sajat kontenert tul nagy overhead nelkul. Limitalhatod az eroforrasokat, de nem kotelezo. Ha erdekel, akkor szivesen megmutatom privatban, en hogy hasznalom. (Marmint az LXC-t, nem a Dockert.)
--
Pásztor János
Sole Proprietor @ Opsbears
Development Lead @ IXOLIT
- A hozzászóláshoz be kell jelentkezni
Publicban is megmutathatnád, én is LXC-t használok. Nekem azért szimpatikus a Docker, mert könnyen lehet minimális overhead-del működő konténert csinálni, amit aztán a fejlesztők reprodukálni tudnak a saját gépükön is.
A Docker már megy Windows/OSX alatt is, a Docker Compose is hamarosan jön Windowsra.
-----
„Egy jó kapcsolatban a társunkat az ő dolgában kell támogatni, nem a miénkben.”
rand() a lelke mindennek! :)
Szerinted…
- A hozzászóláshoz be kell jelentkezni
"A Docker már megy Windows/OSX alatt is"
Van egy olyan rossz érzésem, hogy a Windows még mindig nem állt át Linux kernelre. Ezért a Docker Machine pl. VirtualBox-ba dobhat be egy kis Linuxot, hogy abban futtassa a konténereket. A semminél több, de nem egyszerűbb akkor már inkább alapból Linuxon dolgozni? Persze ennél sokkal többet tud a Docker Machine, de akkor sem látom az igazi értelmét.
- A hozzászóláshoz be kell jelentkezni
Nekem egyszerűbb, de nem mindenkinek. Nem megyek bele abba a flame-ba, hogy minden fejlesztő egységes környezetet használjon, mert nem mindig oldható meg.
Valóban használ Virtualboxot ilyen esetben, de nem mindegy, hogy ezt neked kell összelőni, vagy megy magától.
-----
„Egy jó kapcsolatban a társunkat az ő dolgában kell támogatni, nem a miénkben.”
rand() a lelke mindennek! :)
Szerinted…
- A hozzászóláshoz be kell jelentkezni
Lehetne, de ha publicban mutatom meg, akkor elobb ki kell cenzurazni par dolgot. :)
--
Pásztor János
Sole Proprietor @ Opsbears
Development Lead @ IXOLIT
- A hozzászóláshoz be kell jelentkezni
.
- A hozzászóláshoz be kell jelentkezni
Annyit látok, hogy szegény Dockeresek kezéből kiszedték a saját formátumukat és futtató környezetüket, így kvázi standard lett: https://www.opencontainers.org/
- A hozzászóláshoz be kell jelentkezni
az lxc sem virtualizacio, hanem egy kontener technologia, igy a dockert sem egy vm-mel kell osszevetni.
--
"nem tárgyszerűen nézem a dolgot, hanem a vádló szerepéből. Sok bosszúságot okoztak, örülnék ha megbüntetnék őket - tudom gyarló dolog, de hát nem vagyok tökéletes." (BehringerZoltan)
- A hozzászóláshoz be kell jelentkezni
„fix hostneveket ugy kell beletuszkolni kulon”
A linking nem segít?
-----
„Egy jó kapcsolatban a társunkat az ő dolgában kell támogatni, nem a miénkben.”
rand() a lelke mindennek! :)
Szerinted…
- A hozzászóláshoz be kell jelentkezni
Nyilvan meg lehet oldalni, de aki a Dockert sima virtualizacios / container technologianak akarja hasznalni, az szerintem felreteerti hogy mire valo.
--
Pásztor János
Sole Proprietor @ Opsbears
Development Lead @ IXOLIT
- A hozzászóláshoz be kell jelentkezni
A dockert az az LXC, ami hordozhato, de eredetileg arra talaltak ki, hogy futtatsz benne egy parancsot es kesz. Bar mi egesz szep kis IaaS rendszereket alakitottunk/alakitunk ki benne. Csak kell hozza mondjuk supervisord vagy monnit, vagy akarmi hasonlo.
Nekunk bejott.
- A hozzászóláshoz be kell jelentkezni
Én úgy látom elég sok itt a félreértés. A Docker arra jó, hogy nagy mennyiségben tud olyan alkalmazásokat futtatni, melyek webalkalmazások és/vagy nagyon jól skálázódó alkalmazások. Valamint üzemeltetésben van egy nagyon nagy előnye: amikor jönnek a különböző fejlesztők különböző verziójú és egymással pl nem kompatiblis, vagy egy rendszeren nem jól viselkedő libekkel, különböző PHP/Perl/Python/Ruby stb verziókkal küldik az alkalmazásaikat, amiket az ügyfél/diviziók/stb számára futtatni KELL és old meg... Nem csak hype ez, hanem egy teljesen az élet szülte megoldás. A megvalósítás persze hordoz hátrányokat, gyorsan fejlődik, alakul még. Ami a rkt akart választ adni, ők is észbe kaptak, és elkezték modulárisra alakítani a rendszert. Van már multi-host networking, régen is lehetett erre megoldást találni, még 1.7 és 1.8 előtt is.
Akik az állományok, www tartalom, mail stb miatt aggódtak, azoknak mondanám ,hogy van volume management, amivel akár a lokális vagy becsatolt könyvtárakat is lehet a rendszernek átadni. Az 1.8-tól már stabil(nak mondott) plugin/driver alapú volume managementtel pedig lehet mindenféle storaget használni, pl Ceph-et, EMC megoldásait stb. Eddig is volt lehetőség, még a swarm/compose/stb megoldás előtt a Flocker-rel, stb kezelni az "utazó" volume-okat. És lehetne folytatni. Attól, mert a magyar felhasználásra - mivel nincs meg a kultúrája - nem a legmegfelelőbb, attól még ez jó megoldás.
Az meg, hogy ezt üzemeltetni nehéz, IP kiosztásokat stb hogy kezeljük, azoknak pedig a figyelmébe ajánlom, hogy a Dockert nem az 1-2-3 fizikai szerveres környezetekre találták ki. Kit zavar, hogy más az IP éppen? A hostnevhez tartozó IP-t lehet frissíteni belső DNS-ben, lehet elé tenni ADC-t, vagy sima reverse proxykat. És igen, ezt össze kell állítani, meg kell tervezni, meg kell csinálni. Még, aztán már egyre több kész megoldás is van erre.
- A hozzászóláshoz be kell jelentkezni
"egymással pl nem kompatiblis, vagy egy rendszeren nem jól viselkedő libekkel, különböző PHP/Perl/Python/Ruby stb verziókkal küldik az alkalmazásaikat" - lovon fordítva ülés esete. Normális helyen van fejlesztésekre vonatkozó elvárás a használható szoftververziókra nézve is, és nem az n+1. szoftvergányoló beszállító határozza meg, hogy mit használ, hanem a megrendelő írja elő, hogy a motyónak adott szoftverkörnyezetben kell működnie. Ilyen alapon egy fejlesztő jöhetne azzal, hogy neki tessen DOS-os futtatókörnyezetet adni Clipperrel meg dBase-zel, mert az ő alkalmazása azon fut, a másik meg mondhatná, hogy a cucc, amit szállít, az a.out bináris, és olyan környezetre van szüksége... Aztán a biztonságos üzemeltetés meg nagyívben le lesz sz@rva, mert a beszállító (szotvergányoló) marhára nem fog az általa szállított konténerben lévő komponensek biztonsági frissítéseivel foglalkozni, hanem kijelenti, hogy semmit sem szabad változtatni/frissíteni benne. És ha gáz van, akkor lehet, hogy az ő valagát is fogják rugdalni, de hogy az üzemeltetők lesznek a rúdaszpirin szopott végén, az 100...
- A hozzászóláshoz be kell jelentkezni
Normális helyen van fejlesztésekre vonatkozó elvárás a használható szoftververziókra nézve is, és nem az n+1. szoftvergányoló beszállító határozza meg, hogy mit használ, hanem a megrendelő írja elő, hogy a motyónak adott szoftverkörnyezetben kell működnie
LOL :-) Most akkor vagy nagyon keves normalis hely van, vagy te nem talalkoztal meg olyan (sajnos) eletszagu helyzettel, hogy csak azert kell egy gepre mysql es postgresql is, mert az ugyfel egyik web fejlesztoje ezt szereti, a masik meg azt.
De fejlesztoi oldalrol nezve is nagyon jo a docker, mert nem kell 10 fajta linux disztrot figyelemmel kiserned (kernel verzio, lib-ek, c fordito verziok, csomagnevek, fuggosegek, stb.), hanem kiszemelsz 1 disztrot, csak azzal az 1-gyel dolgozol, aztan az eredmenyt szallitod, es mindenki boldog...
--
"nem tárgyszerűen nézem a dolgot, hanem a vádló szerepéből. Sok bosszúságot okoztak, örülnék ha megbüntetnék őket - tudom gyarló dolog, de hát nem vagyok tökéletes." (BehringerZoltan)
- A hozzászóláshoz be kell jelentkezni
Nem egy helyen volt szerencsém belső szabályzatokat írni, illetve véleményezni a külső és belső fejlesztésekkel kapcsolatos elvárások témakörében. És érdekes módon mindenütt előírható volt, hogy milyen komponensek és azoknak mely verziói elvártak, elfogadottak és mi az, ami nem használható.
Tény, hogy az olcsó péhápépistike-szintű kódgányolók ott nem rúgtak labdába, viszont az üzemeltetés és az IT-biztonsági területnek sem kellett hanyattsz0pnia magát, a karácsonyfának kinéző rendszerek miatt.
Ahol ez nem vihető keresztül, ott a rendszerek evolúciója helyett az entrópiája fog rettenet mértékben növekedni, ami semmilyen szempontból sem jó.
"fejlesztoi oldalrol nezve is nagyon jo a docker, mert nem kell 10 fajta linux disztrot figyelemmel kiserned" - megrendelőként már bocs, de sz@rom le a szállító nyűgjét: én fizetek, megmondom, mire és mit csináljon meg. Ha tudja, megcsinálja, ha nem, akkor köszviszlát, másé a meló. Egyébként meg nem kell 10-et, elég kettőt, esetleg hármat (pl. RHEL5/6, esetleg 7, az új fejlesztéseknél); bár ha valamilyen Java-s appszerveres dologról van szó, ott a szívás java a Java-ból következik, azt meg tényleg marha nehéz verzióról verzióra támogatni.
Megértem, hogy a fejlesztő a legutolsó utáni verziót szeretné használni, viszont a megrendelő meg óvatos duhajként inkább maradna a stabil, jól bevált, és mondjuk még 2-3-5 évig támogatott főverziók mellett - érthető okból.
- A hozzászóláshoz be kell jelentkezni
És érdekes módon mindenütt előírható volt
mindenutt ... amivel te talalkoztal. Mas meg massal volt kenytelen talalkozni. De ertem a hatranyait a dolognak, csak van, amikor meg van mondva, mit kell szeretni.
megrendelőként már bocs, de sz@rom le a szállító nyűgjét: én fizetek, megmondom, mire és mit csináljon meg. Ha tudja, megcsinálja, ha nem, akkor köszviszlát, másé a meló.
biztos van olyan termek, amelynel megteheted, de olyan is, amelyiknel nem.
Megértem, hogy a fejlesztő a legutolsó utáni verziót szeretné használni, viszont a megrendelő meg óvatos duhajként inkább maradna a stabil, jól bevált, és mondjuk még 2-3-5 évig támogatott főverziók mellett - érthető okból.
fyi: pont erre jo a docker ;-) Mondjuk az RHEL 5/6 ebbol a szempontbol nem jo pelda, mert csak az RHEL 7-et tamogatja. De a megrendelonek az ujabb RHEL foverziokkal szembeni vaerziojat csokkentheti, hogy a kontener gyartoja az egesz kontenert supportalja...
--
"nem tárgyszerűen nézem a dolgot, hanem a vádló szerepéből. Sok bosszúságot okoztak, örülnék ha megbüntetnék őket - tudom gyarló dolog, de hát nem vagyok tökéletes." (BehringerZoltan)
- A hozzászóláshoz be kell jelentkezni
Öööö... ez nem egészen így van. Nagyon sokszor a megrendelő egy terméket vesz, aminek van egy függősége, amire annak szüksége van (adatbázis típus, java verzió, stb.). Ha ezen rendszerek szépen elszeparálva futnak, az szerintem nagyjából rendben is van, üzemeltető szempontból én ezt nyugisabbnak érzem, mint amikor a különböző verziójú könyvtárakat kell
egymáshoz reszelni, egy VM-en belül.
- A hozzászóláshoz be kell jelentkezni
Ha mindenfélét szabad összevásárolni, akkor abból káosz lesz. A megrendelőnek alapvető érdeke (lenne), hogy a vásárlás során is figyelembe vegye a meglévő infrastruktúrát, a rendelkezésre álló, belső támogatással bíró platformokat és eszközöket. Belső támogatás nem csak az, hogy van már olyan és van vele tapasztalat, hanem azt is, hogy a meglévő infrastruktúrába, illetve annak a fejlesztési irányvonalába illeszkedő.
Ha van egy központi webkiszolgáló, akkor ott célszerűen PHP, RDBMS, meg mondjuk authentikácó témában meg lehet, és meg is kell határozni, hogy mi használható, és ha például egy Ruby-s motyóval jön valaki, akkor az üzemeltetési területtel közös döntés kérdése, hogy felvehető-e a Ruby a rendszer használható komponensei közé vagy sem.
- A hozzászóláshoz be kell jelentkezni
Ez az ideális eset, de nagyon sokszor ez egyáltalán nem így működik. Van egy cég fix terméke, nekik az kell, mert az tudja azt, amire szükség van.
- A hozzászóláshoz be kell jelentkezni
Döntés kérdése, hogy beillesztik-e az adott terméket/eszközt a többi rendszer mellé/közé, vagy sem (dobozos termék), illetve megveszik-e az adott fejlesztő idejét/munkáját, ha az nem tud/nem akar a megrendelő által előírt eszközökkel/környezetben/környezetre fejleszteni.
- A hozzászóláshoz be kell jelentkezni
A lehető legritkább esetben fordulhat elő, hogy kifizetik egy mondjuk Ruby-ban írt alkalmazás átírását PHP-ra, csak hogy az üzemeltetőknek könyebb legyen az élete..
sőt, legtöbbször csak odavágják, hogy tessék, itt van ez az alkalmazás, üzemeltesd...
- A hozzászóláshoz be kell jelentkezni
legtöbbször csak odavágják, hogy tessék, itt van ez az alkalmazás, üzemeltesd...
azzal egyutt, hogy sokszor tenyleg ez van, kijarna a szivlapat annak, akitol ez elhangzik...
--
"nem tárgyszerűen nézem a dolgot, hanem a vádló szerepéből. Sok bosszúságot okoztak, örülnék ha megbüntetnék őket - tudom gyarló dolog, de hát nem vagyok tökéletes." (BehringerZoltan)
- A hozzászóláshoz be kell jelentkezni
Nem mondom, hogy ez jó, csak azt, hogy legtöbbször ez a realitás..
- A hozzászóláshoz be kell jelentkezni
Ha emberszámba veszik az üzemeltetést, akkor van egy szép lista arról, hogy milyen eszközök/komponensek használata kötelező, mi az, ami elfogadható, és mi az, ami tiltott. Ezek adják magukat: ha valamelyik skatulyába belefér az adott motyó, akkor aszerint kell eljárni, ha meg egyikbe sem, akkor goto 10, ahol a skatulyákat készítik, és eldönteni, hogy melyikbe kerüljön bele.
Ahol az üzemeltetés, illetve az architektura fejlesztéséért/jövőjéért felelős terület nélkül döntenek arról, hogy mit használnak, oda én is kiosztanék egy pár szívlapátos simogatás, csak amolyan nevelő célzattal :)
- A hozzászóláshoz be kell jelentkezni
Mindketten úgy beszéltek a "fejlesztésről" és az "üzemeltetésről", mint két, egymástól független társaságról, amelyek amúgy passzióból egymást szívatják. Ha ilyen környezetet tapasztaltok magatok körül, akkor ott ne próbálkozzatok Docker-rel, csalódás lesz.
Kis olvasnivaló:
http://blog.matthewskelton.net/2013/10/22/what-team-structure-is-right-…
- A hozzászóláshoz be kell jelentkezni
Teljesen más preferenciáik vannak a fejlesztőknek, mint az éles üzemi rendszereket üzemeltetőknek - holott mindkét oldal stabil motyót szeretne, ami a tapasztalatok alapján Docker esetében nem minden esetben valósul meg - és az még a jobbik eset, ha valamelyik területnek van némi tippje arra nézve, hogy miért instabil az egész kóceráj...
- A hozzászóláshoz be kell jelentkezni
A fejlesztőknek nem elsődleges célja a stabilitás - az ő elsődleges céljuk a fejlesztés.
- A hozzászóláshoz be kell jelentkezni
ez eleg alacsonyszintu megkozelites.
--
"nem tárgyszerűen nézem a dolgot, hanem a vádló szerepéből. Sok bosszúságot okoztak, örülnék ha megbüntetnék őket - tudom gyarló dolog, de hát nem vagyok tökéletes." (BehringerZoltan)
- A hozzászóláshoz be kell jelentkezni
Tetszőleges DevOps könyvben egyik elsődleges problémaként azt emelik ki, hogy az üzem állandóságra törekszik, a fejlesztés meg változtatásokra, így kibékíthetetlen az alapvető ellentét közöttük, pont ezért jó a DevOps márkanév alatt a nagyon szorosan együttműködő üzemeltetés és fejlesztés.
- A hozzászóláshoz be kell jelentkezni
az uzemeltetes mar regen nem allandosagra, hanem megbizhatosagra es a szolgaltatas folytonossagara torekszik, nagy kulonbseg.
- A hozzászóláshoz be kell jelentkezni
+1 - A docker meg (vagy inkább még) nem igazán ennek a mintapéldája...
- A hozzászóláshoz be kell jelentkezni
miert is nem?
--
"nem tárgyszerűen nézem a dolgot, hanem a vádló szerepéből. Sok bosszúságot okoztak, örülnék ha megbüntetnék őket - tudom gyarló dolog, de hát nem vagyok tökéletes." (BehringerZoltan)
- A hozzászóláshoz be kell jelentkezni
ez (igy) mesterseges (es egyebkent hamis) szembeforditasa a 2 bandanak...
--
"nem tárgyszerűen nézem a dolgot, hanem a vádló szerepéből. Sok bosszúságot okoztak, örülnék ha megbüntetnék őket - tudom gyarló dolog, de hát nem vagyok tökéletes." (BehringerZoltan)
- A hozzászóláshoz be kell jelentkezni
Sajnos ez a nezet nem kompatibilis a valo vliaggal, de probalkozni lehet :)
- A hozzászóláshoz be kell jelentkezni
Eleg sok helyen kell legacy szoftvereket uzemeltetni ilyen-olyan okbol kifolyolag. Ott a lib verziokkal tudnak elofordulni erdekes dolgok.
Egyebkent a kontenerezesnek van egy masik elonye is: konnyebb mozgatni az alkalmazasokat, hiszen csak attolod a kontenert egy masik vasra es uccu neki. IP cim es minden ugyanaz, had szoljon.
--
Pásztor János
Sole Proprietor @ Opsbears
Development Lead @ IXOLIT
- A hozzászóláshoz be kell jelentkezni
Áttolom a VM-et egy másik hostra, aztán jónapot :-P
- A hozzászóláshoz be kell jelentkezni
Persze, ha vegtelen vasad van, akkor belefer az, hogy minden alkalmazasnak legyen sajat VM-je. Azert az emberek tobbsege nincs ekkora koltsegvetessel megaldva.
--
Pásztor János
Sole Proprietor @ Opsbears
Development Lead @ IXOLIT
- A hozzászóláshoz be kell jelentkezni
Ha karácsonyfát akarnak csinálni normális IT-infrastruktúra helyett, akkor azt csinálja más, nekem nem jön be.
- A hozzászóláshoz be kell jelentkezni
A jelek szerint Te azert egeszen mas fajta szoftvereket uzemeltetsz, mint amit a Docker jellemzo celkozonsege.
--
Pásztor János
Sole Proprietor @ Opsbears
Development Lead @ IXOLIT
- A hozzászóláshoz be kell jelentkezni
nem tudsz elszakadni a VM koncepciotol :-) A docker kontenerizaciojanak kisebb az overhead-je, igy ha eddig 1 gepen volt egy komplett alkalmazas stack-ed, akkor ugyanugy maradhatsz 1 db hoston ugy, hogy a stack minden komponense egy kulon kontenerben fut...
--
"nem tárgyszerűen nézem a dolgot, hanem a vádló szerepéből. Sok bosszúságot okoztak, örülnék ha megbüntetnék őket - tudom gyarló dolog, de hát nem vagyok tökéletes." (BehringerZoltan)
- A hozzászóláshoz be kell jelentkezni
ezt mondjuk megcsinálhatod pl. openvz-vel, vagy lxc-vel közvetlenül is.
- A hozzászóláshoz be kell jelentkezni
meg. senki sem mondta, hogy a Docker uj technologia. egy uj felulet, amin a letezo technologiat kenyelmesen tudod hasznalni.
- A hozzászóláshoz be kell jelentkezni
azert ad a docker 1-2 pluszt is: http://stackoverflow.com/questions/17989306/what-does-docker-add-to-lxc…, ill. az sem mindegy mennyi melo ugyanazt elkesziteni lxc-vel ill. docker-rel...
--
"nem tárgyszerűen nézem a dolgot, hanem a vádló szerepéből. Sok bosszúságot okoztak, örülnék ha megbüntetnék őket - tudom gyarló dolog, de hát nem vagyok tökéletes." (BehringerZoltan)
- A hozzászóláshoz be kell jelentkezni
az OP felvetesere reagalva:
a konfiguracio-menedzsment egyik legnagyobb problemaja, hogy a gyakorlatban nem eleg jol definialt a kiindulasi pont, amire epitesz, hiszen nem eletszeru minden egyes rendszercsomagot CM-ben kezelni. emiatt nem ritka, hogy egy nem menedzselt csomag kepes a fejere allitani amugy mukodo rendszereket. erre szuletett megoldaskent pl. a Vagrant, amivel garantalni lehet, hogy - ha nem is irtuk le pontosan a kornyezetet CM-ben - ket, egymastol fuggetlen gepen ugyanazt az allapotot allitsuk elo a fejlesztoknek.
a Docker par szempontbol elter: egyreszt az UnionFS hasznalata miatt konnyebb osszeallitani a rendszert es kevesebb helyet foglal, masreszt az LXC miatt nincs virtualizalas, csak izolacio, ami gyorsabb, persze mas kerdes, hogy a halozati reteg ebbol a sebessegbol mennyit vesz vissza.
a kontener ilyen szempontbol Maggi kocka (ez legyen az alap), es a te munkamenetedhez passzoloan valaszthatod, hogy utana Puppettel vagy massal rakod ra az alkalmazast, vagy az is egy kontenerreteg lesz, vagy hogy Dockerfile-t adsz a fejlesztonek es/vagy a CM repo cimet. ismerek olyan helyet, ahol az eles alkalmazas is Docker alol fut, mert igy egyseges a pipeline, de olyat is, ahol csak a fejlesztok hasznaljak es tole fuggetlen deploy van VM-ekbe.
- A hozzászóláshoz be kell jelentkezni
Egy kis gondolat ebreszto hogy lehet ezeket osszegyurni, https://www.youtube.com/watch?v=KSo_mcJxFIA
- A hozzászóláshoz be kell jelentkezni