• úvod
  • témata
  • události
  • tržiště
  • diskuze
  • nástěnka
  • přihlásit
    registrace
    ztracené heslo?
    ALMADDocker a kontejnery
    Docker aneb přístupný provoz kontejnerizovaných aplikací
    Docker(Hub), Compose, Swarm, boot2docker, DevOps, LXC, ECS, TumTum a jiné buzzwordy
    Bezpečnost v prostředí kontejnerů
    Related: automatizace [ Centralizovaná správa stanic a ostatních prvků v síti konfigurace/inventarizace/instalace/aktualizace/zalohovani ]
    rozbalit záhlaví
    ADM
    ADM --- ---
    MVEK: tak kristalova koule nepomohla, ale je to samozrejme ciste sitovy problem, podle toho co pises to vypada ze docker kontejnery spoustite pod minikube ve virtualboxu. dulezity bude si zjistit jaky networking pouziva ten virtualbox, viz https://www.thomas-krenn.com/en/wiki/Network_Configuration_in_VirtualBox a s tim souvisi ta sit 192.168.99.1/24, ta je kde, na jakym rozhrani

    ted vidim ze pises o proxy, ta se v siti nachazi kde? nedava moc smysl aby se pouzivala externi proxy pro lokalne spustene docker kontejnery
    MVEK
    MVEK --- ---
    DANIELSOFT, MVEK: Dík, no ten parametr se zdá, že ani můj Docker (17.10 klient, 17.12 server) nezná (není v nápovědě), ale možná opravdu na Win chybí. Ale stejně zatím nevím, jak bych to aplikoval, protože já vůbec příkaz docker pro startování a vytváření díky tomu Helmu atd. nepoužívám (ale třeba bych našel někde, jak to protlačit).


    Já ale zhruba příčinu mezitím odhalil, když jsem si zkusil wgetem kontaktovat ten mock. On je problém v našich proxinách. Takže spíš půjdu o dům vedle do nějakého síťového fóra, protože jedna věc je, že defaultně máme nastavenou proxy pro HTTP a HTTPS komunikace, a tu to samozřejmě offline nenajde (a na VPN asi taky ne). Druhá věc je, že vyřazením tohoto nastavení, kdy mi už wget asi kontaktuje mock, mi to stejně stále nefunguje.
    DANIELSOFT
    DANIELSOFT --- ---
    MVEK: hmmm... možná to bude něco jiného, ale já měl před časem problém, že mi Docker ignoroval /etc/hosts na hostitelském stroji

    v mém případě pomohl parametr "--network host" u "docker run", třeba ti to pomůže taky
    MVEK
    MVEK --- ---
    Omlouvám se za lame dotaz amatéra, jsem nucen s Dockerem pracovat jako tester vyvíjené aplikace, a přitom podporu máme strašnou, ale hlavně tento problém omezuje v tuto chvíli jen mě, a jen pokud potřebuji pracovat z terénu, nikoliv v kanclu, takže to přenechat jiným moc nemůžu.

    Řeším, proč mi komunikace z microservice v Dockeru kontaktuje správně mock na 192.168.99.1:10600 jen, když jsem ve firemní síti. Pokud jsem na VPN nebo offline nebo jinde, tak timeout. Přitom na tom 192.168.99.1:10600 poslouchá mock pouštěný z mého počítače (kousek kódu pouštěný přímo v IDE IntelliJ Idea).
    Ping na danou IP adresu můžu udělat kdekoliv a dopadne stejně úspěšně. Komunikace mezi dílčímí mikroservisami také funguje. A z počítače do mikroservis přes jinou soukromou adresu (192.168.99.100) se taky dostanu kdekoliv.

    Nenapadá někoho, kam dál se pošťouchnout, kde pátrat?
    Dodám jen, že tedy nejedeme na čistém Dockeru. Máme tu ještě gokube/minikube, Helm, Kubernetes a minikube VM se vytvoří a spustí ve VirtualBoxu. Instalaci mikroservis pak řešíme přes Helm. Celé prostředí startujeme přes minikube start/stop.
    Workaroundem by pro mě bylo připojit si ten mock jako docker kontejner, který jiný vývojář vytvořil, ale ten neumíme nahrát přes Helm, aby to spolupracovalo. A ano, podle mě je tu pěkný bordel, ale jelikož tomu jen tak rozumět nebudu, tak do toho vrtat nemůžu.

    Možná je to spíš síťová záležitost, ale třeba se tu aspoň dozvím, kde pátrat. V tuhle chvíli se půjdu prát s Wiresharkem, ale jsem v něm amatér, zkusil jsem si v něm něco před mnoha lety.
    URPUTNIK
    URPUTNIK --- ---
    MARTEN: te velikosti jsem se bal u image repository, nas nexus ma aktualne kolem 50gb zbuildenych zdrojaku (mival i 400, nez jsme ho spravne nastavili :) ), kdyz k tomu pridam tu omacku s OS, javou apod .. ale je pravda ze prostor je dneska uz levny a asi to zbytecne optimalizuju dopredu
    URPUTNIK
    URPUTNIK --- ---
    f) mate priklad toho, jaky tooly mate v tom dev image? protoze my si vystacime se sh a vi, ktery predpokladam oba v alpine budou .. ale mozna jsem jenom zvykli na praci v konzoli .. vlastne mozna mc, ten tam asi neni
    URPUTNIK
    URPUTNIK --- ---
    d) v terminologii image, ten z ktereho se vychazi, je 'vyssi', nebo 'nizsi'? abych kladl spravne formulovane otazky :)

    e) jestli a kde drzite dokumentaci, napriklad hierarchie docker image? ted mam treba predstavu ze bude nejaky javovy base image (alpine, java), nad/pod nim bude dev image (aka pridany volume pro lokalni vyvoj, stale jeste staticky image), nad/pod nim produkcni image (ten bude mit v sobe uz konkretni aplikaci a volume jen pro logy) .. jenom textove uvnitr dockerfile? nejaky vhodny UML diagram? treba package? prijde mi ze ted to treba nejak poskladame, ale za rok se nekdo zepta "a proc" a budem to muset znova vymyslet :)

    e) tohle si ted vyzkousim, tak to asi nemusite odpoviat :) zajima me, jestlli vyssi/nizsi dockerfily prepisujou definici volume/portu, nebo se s ni slucuji? aka jestli se da jenom 'pridavat', nebo ji zcela prepisuji? napriklad ten dev image, ktery ma proti produkcnimu volume pridane volume .. jestli muze byt predkem produkcniho, protoze v produkci nechci/nepotrebuju to volume na nahravani aplikaci ..
    MARTEN
    MARTEN --- ---
    URPUTNIK:
    a) Jde oboji. Spravnejsi je balit i s kodem aplikace, duvody presne ty ktere pises. Chces tedy mit verzi stejnou se vsim. Image pouze z balicky je dobry na vyvoj a mountovat git repository. Pro produkci ne, nemusis trefit kombinaci verzi. Velke to nebude, nebo bych se tim v dnesni tobe netrapil. Docker je chytry v tom, ze funguje jako git. Pokud RUN byl stejny v predchozim buildu, tak to pouzije z nej. Vpodstate pak zalezi na poradi v Dockerfile jak to ve vysledku bude velke. Co se nemeni dej na zacatek, co se meni tak jako posledni. Promazat vzdy cache package managementu atd.
    Ad prostredi. Vetsinou se to jede bud pres environment variable nebo mountujes config file. Aplikace bud pouziva ten config, nebo bere z environment, nebo je CMD nastaven na script, ktery z environment vezme promenne a da je do config souboru a pak spusti aplikaci.

    b) Vytvor vzdy image s cislem verze application:1.2.3 a pokud je to aktualni tak i jako latest. Pokud delam balicky pro test prostredi co nepujdou do produkce, datam jim jako verzi timestampu. Ty se pak treba po par dnech mazou.

    c) pokud je to vic technologii, tak bych spolecny base nedelal. Prijdes presne o vyhodu toho co je hotove. To uz bych do toho zapojil treba ansible. Takze budete mit base pro javu ktery vychazi z oficialni Java a prvni command je zavolani nejakeho vaseho base scriptu. Vlastni base je dobry kdyz mas cas to vyladit, vse postavis treba na alpine, vsude mas tooly co pouzivate a na tom delas uz ty drobnosti jako java, apache,... Ale zabere to hodne casu, ve vysledku budou mensi a budou vam vic sedet. Oficialni image maji kazdy jiny pristup jak se configuruji, coz pridava nutnost znat jak ktery funguje, vlastni si udelate at jsou vsechny stejne. Ale neresil bych, hlavne ne takhle na zacatku, pokud teprve s tim zacinate.
    URPUTNIK
    URPUTNIK --- ---
    ahoj, mel jsem zkusenost s dockerem z predlonska, ale tam bylo ciste uzivatelsky .. konecne jsem se dostali k virtualizaci v praci, takze procitam a studuju a rozvazuju, co pro nas plati a co ne ..

    zatim mam napriklad takovehle otazky, ale je mozny ze to spis patri do continuous-delivery klubu

    a) image, ktery bude obsahovat jen "engine", ale aplikaci nahravat az v ramci deploye (u nas napriklad image jenom s tomcatem, pres volume napojit adresar, do nej bude CI sypat aplikace a odkud si bude tomcat spoustet), nebo muzu rovnou balit aplikaci do image, cili pak staci jen nastartovat image a budu mit jistotu ze mi v produkci bezi identicke sestaveni jako treba v testingu..
    zatim se klonim k druhe variante (videl jsem ji z uzivatelskeho pohledu), ma to pro mne 2 hacky - konfigurace pro prostredi musi byt mimo aplikaci (jinak nemuzu pouzit stejny image pro ruzna prostredi), druhak to bude asi docela zrat misto, ne? pokud mi nekde sedi CI server, ktery bude po kazdem commitu buildit aplikaci a vyrabet novy image (ktery obsahuje danou aplikaci & tomcat & javu & alpine :) )? predpokladam ze obvykle je ty stare mazat?

    b) jak oznacujete ten validni image, co vypadnul z CI (tzn treba prosel aut. testy a testovacim deploymentem), pres tag latest? nebo ho radsi nepouzivate (viz duvody) a mate treba nejaky specialni vlastni?

    c) nasel jsem nekde doporuceni, aby vsechny nase image pouzivaly stejny base image .. nejak si nedovedu predstavit, co to znamena pro nas, protoze krom nekolik ruznych jav (takhle se to asi nesklonuje co :) ), tu mame nejaky php, nejaky python, .. pokud budu vychazet ze stejneho base-image, tak se nemuzu oprit o uz hotovy kontejnery, napriklad s java+tomcat, apache+php php a budu si je muset vsechny poskladat rucne.. mozna se to da obejit nejaky dockerfilem, ktery bude fungovat jako wrapper kolem libovolneho jineho (patrne urceneho pres promenne, jestli se teda daji pouzit ve FROM)? nebo mit rucne poskladany image neni takovej problem? mi to prijde jako ze vymyslim kolo ..
    ADM
    ADM --- ---
    SH_PANDA: pokud tam posilas co musis, tak neni zbyti, ja spis poukazuji na to, ze se posila cely adresar kde je umisteny dockerfile, coz muze byt mnohem vic nez je nutny. asi proste predpokladaji, ze dockerfile je umisteny vzdy v rootu projektu
    SH_PANDA
    SH_PANDA --- ---
    ADM: no je, pac pres ADD pridavam instalacky Oracle Database 18c EE. Kdyz tak presmyslim, mozna bych jem mohl dat do volume, ktery bych pripojil a tak bych pres ADD posilal jenom shell scripty + response file.
    ADM
    ADM --- ---
    SH_PANDA: on ten docker build je trochu neintuitivni v tom, ze posila docker daemonovi _cely_ aktualni adresar, i kdyz mas v dockerfile jen ADD subdir (tzn. "docker build -t image:tag -f dockerfile ." misto toho aby si precetl co je v dockerfile za ADD, tak posle vsechno). zkontroluj si jestli to neni tenhle pripad
    SH_PANDA
    SH_PANDA --- ---
    da se nejak urychlit "Sending build context to Docker daemon"? intermediate fs layers su nacacheovane, jenom tenhle prvni krok trva debilne dlouho. neco mi rika, ze je to tim, ze jsem na macOS a Docker nebezi nativne. :-/
    NIXIMOR
    NIXIMOR --- ---
    DWICH: je to sice OT, ale z me zkusenosti nejvetsi problem pri soubeznem provozu Hyper-V a VirtualBoxu je v tom, ze VirtualBox potom nedokaze spustit 64bit system, dovoli jen 32bit.
    DWICH
    DWICH --- ---
    RUDOLF: AFAIK kdyz jede clovek docker na windows nativne pres hypervizor, tak pak k tomu hypervizoru nemuze virtualbox, tzn bud a nebo. Nezkousel jsem, jestli by to nekdo chtel provozovat, doporucuju tohle zjistit.
    RUDOLF
    RUDOLF --- ---
    OMNISLASH: Když upgradneš domácí win na pro, můžeš jet “nativně” přes wokkeního hypevizora. Nemám to ještě otestováný, tak nevím o kolik je to lepší než cesta přes virtual box.
    INDIAN
    INDIAN --- ---
    OMNISLASH: pro me za me si to rozjed treba na herni konzoli. asi sem natvrdlej a ten tvuj dotaz s tim jedinym nabizenym resenim sem asi nepochopil, proto sem nabid "obvyklou" alternativu...
    à propos, ja taky pracuju v dost specifickym prostredi, standardnim resenim se musim kolikrat vyhejbat obloukem a plno veci musim delat dost krkolomne, nicmene kdyz se na neco ptam, tak aspon uvedu proc to nejde ... aspon mi to tak teda za ty leta na vselijakejch forech (stackoverflow, atp.) prijde, jinak relevantni odpoved nikdy nedostanu... nehledej za tim nyx, radoby chytrejch rozumbradu jako ja sou plny internety, jestli to tak chces slyset :)
    MORTAELTH
    MORTAELTH --- ---
    Uz asi odbocuju od dockeru, ale.. Azure ted ma ty "B" stroje. Asi zkratka pro batch nebo boost. Strada se vam vykon (ve forme kreditu) ve chvili kdy se stroj plne nevyuziva. A az se zacne vyuzivat, odecitaji se kredity. Pro stroje ktery jsou zapnuty a cekaj nez si s nima bude nekdo hrat taky dobry. Nebo pro nejaky cron tasky.
    OMNISLASH
    OMNISLASH --- ---
    ADM: diky. tohle info me uplne minulo a je to asi presne to, co jsem potreboval vedet. ergo libovolne zelezo s dostatecnou silou bude stacit

    DWICH: takze (byt to dle predchoziho asi neni stejne potreba), ta podpora tam je. diky. na dalku se k tomu budu pripojovat max proto, abych si ten model prace vyzkousel a dobre se naucil na dalsi nasazeni. jinak to bude fyzicky tady u me pod stolem s klavesnici, mysi a vystupem na dva monitory, s normalnim desktopem nad ubuntu

    INDIAN: nic ve zlem, ale tohle je takova trochu nyxi reakce. ptam se, zda je chutnejsi ipa nebo apa a dozvim se, ze mam radeji pit mineralku. ja to ale tak, jak to popisujes, nechci. mam k tomu vice duvodu a prijde mi popravde zbytecne to rozebirat, dotaz preci smeroval jinam

    INDIAN: my si asi uplne rozumet nebudeme :) ja v tom svem postu jasne pisu o variante bez os, ergo ne, nemas tam widle, ktery sou pro tenhle pripad absolutne k nicemu
    INDIAN
    INDIAN --- ---
    RATTKIN: me prijde v tomhle pripade ta kraksna z czc jako predrazenej kram pro tohle uziti ... navic je to desktop s widlema, ktery tam sou pro tenhle pripad absolutne k nicemu.
    jak rika MORTAELTH kdyz uz to neni treba, zahodis to a nazdar... vyskocil na me v googlu prvni OVH, 266 Kč s DPH / mesicne za 6GB RAM/25GB disk....
    tudiz jestli pocitam dobre, tak se to pridavny topeni do kanclu vrati za 6 let :)

    MORTAELTH
    MORTAELTH --- ---
    na nejaky svoje uceni je ten IaaS / IaaC mode super. Vytvoris, delas si na tom kraviny, testujes, rozboris, smazes. Potrebujes vetsi vykon, nebo mensi? No problem..
    A pri nastaveni vypinani na noc/vikendy nebo predplaceni na 1 - 3 roky ...

    ale at si kazdy posoudi co mu sedi lepe, at uz filozofii nebo cenou.
    RATTKIN
    RATTKIN --- ---
    když jsem počítal hardware pro náročné ERP aplikace, tak to v cloudu vyšlo vždycky tak drahý, že se vlastní server vrátil nejpozději druhý rok. Pokud to železo celé využije, a nebo už má serverovnu a lidi k tomu, tak koupit server.

    Pokud to bude využité na 0,1 nebo se nechce učit milion nových kravin s linuxem (yay!) tak by asi bylo lepší v čoudu
    MORTAELTH
    MORTAELTH --- ---
    nebo azure / aws

    azure ma cca 50% vsech bezicich VM linux
    Kliknutím sem můžete změnit nastavení reklam