• ú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í
    MLEKAR_STEIN
    MLEKAR_STEIN --- ---
    URPUTNIK: to s tim klonem repo, dělám to tak, že mám nadefinovaný, že se mi má vyklonovat repo, m8m to v jenkinsu, takže v Jenkins file, ale může to být klidně ve scriptu, a pak z něj do docker image nakopíruju co potřebuju,
    A specielně na tohle mi přijde vhodný multistage build. kde si napřed udělám build jedné image, kde se něco kopíruje, dělají kouzla se scripty a tak. a pak, v tomto případě výsledné přeložené cosi vykopíruju v dalším stage.
    a předpokládá to, že to má nějaké předpřipravené image, ve kterých se to všechno provádí.

    příklad

    FROM example.com/debian:build as BUILD

    ENV WRK=/here/is/wrk
    RUN mkdir -p $WRK/REPO
    COPY /repo/somewhere $WRK/REPO
    RUN somebuildscript.sh

    FROM mydomain.test/docker/runimage:7.5.2-stage

    COPY --from=BUILD /build/path/to/binary /target/path/

    EXPOSE 16666

    ENTRYPOINT ["/docker-entrypoint.sh"]
    CMD ["parameter"]
    ADM
    ADM --- ---
    URPUTNIK: nevim jaky zmeny ve skutecnosti predstavuje ten 'lokalizovany' image, ale snazil bych se co nejvic drzet jen jedinou verzi image, a v runtime ty image pak vybrat konkretni lokalizovanou verzi treba podle env promenny.
    samozrejme pokud jednotliva lokalizace neznamena vyrazny rozdil ve velikosti image pokud bys mel vsechny lokalizace nacpat do jedny
    WOODMAKER
    WOODMAKER --- ---
    URPUTNIK: nevhodná připomínka:
    pokud se N dockerfilů liší jen v posledním kroku, který nastavuje jazyk, jako jistotu bych viděl způsob, že bys udělal společný (N+1) dockerfile, který bys zbuildil jen lokálně a ostatní z něj budou dědit. Ty ostatní pak můžeš pushnout do registru.

    Tipuju, že pokud budeš mít N stejných dockerfilů, ze kterých budeš buildit image, provedou se vždycky všechny kroky v každém z nich.
    URPUTNIK
    URPUTNIK --- ---
    URPUTNIK: resp da se v dockerfilu vynutit, aby ten nasledujici prikaz nekesoval? na SO to obchazi pres argument, ktery se vlastne nepouzije, ale je pokazde 'jiny' ..
    URPUTNIK
    URPUTNIK --- ---
    dobre rano, tak dalsi dotaz .. kontext: mejme aplikaci, ktera potrebuje nejakou konfiguraci (pripojeni na dalsi aplikace, nastaveni poplatne lokalizaci) .. lokalizace jsou 'stejne' (tzn napriklad anglicka lokalizace je stejna, nehlede na prostredi kde se to bude poustet), ale pripojeni dal je prostredi poplatne .. mam v planu udelat image, ktery posklada aplikaci a v poslednim kroku buildeni image se vybere lokalizace podle parametru a vyrobi se konkretni 'lokalizovany' image .. nastaveni poplatne prostredi se pak primountuje ve chvili, kdy se image pousti .. coz ale znamena, ze budu vyrabet napr 5 ruznych variant 1 image (pro kazdou lokalizaci jiny image) .. dotaz: ma smysl, jejich build radit za sebe seriove (tzn ze docker prvni zbuildi, od druhyho vezme z kese vsechno az na lokalizaci (pokud je v buildeni image posunem do pozdnich 'layer')), nebo paralelne (tam se zas zredukuje cas buildu, pac se budou ty image buildit paralelne) .. predpokladam ze obecna odpoved neni, je to asi poplatne obsahu dockerfile .. souhlas?

    a dalsi, predpokladam ze klonovani napriklad git repository pri buildu image neni vhodne, coz? protoze nam se to chova tak, ze docker povazuje ten layer za stejny a reusne ho z predchoziho buildu, misto aby naklonoval aktualni repo .. takze 'spravne' bude to klonovani udelat 'vne docker buildu' a vysledek dovnitr nakopirovat?
    URPUTNIK
    URPUTNIK --- ---
    ADM: snaha se ceni :) ale nemusis se s tim trapit, privatni repo v nexusu + docker hub proxy + group proxy na pull se mi podarilo nakonfigurovat .. a pushuju teda s nasim 'namespace' (funguje i bez)
    ADM
    ADM --- ---
    vim ze to uplne smysl nedava, pouzival jsem docker registry akorat v kubernetes (openshift, icp) kde je to mapovany na namespace, v nexus dokumentaci pisou ze to neumi, ale zitra zkusim otagovat image do nexusu i s cestou a pushout to tam
    ADM
    ADM --- ---
    URPUTNIK: docker-registry-url/namespace/image:tag tak ten namespace se pouziva u nekterych docker-registry jako forma autorizace (namespace tedy spis jako projekt), ale nexus to prave neumi, ten umi udelat vice 'hosted' registry jen na ruznych portech (coz asi pujde nejak skryt za loadbalancerem) ale kazdy projekt ma tedy jiny push url, a aby to jeste vic zamotali tak jde nad tim udelat jednotny pull docker 'group' registry (ktery zaroven jeste muze byt proxy dockerhubu). nikde jsem to nevidel poradne vysvetleny ale docker registry pry nic jako cestu/namespacy neumi (docker login nedelas na url ale na hosta) to delaji ty frontendy nad tim (treba docker-regisry v kubernetes to prave mapuje na namespacy).
    DEFILA
    DEFILA --- ---
    URPUTNIK:
    ono na contejneny nemusis mit docker, isolovat muzes ruznymi zpusoby - treba na urovni cgroup ... nebo zminenych namespacu. Docker drepi nad tim, dodava tomu hezke pozlatko a velky go-runtime :) -> v tomhle ohledu mi aktualne prijde hezci podman (nema ten go-runtime) ale jeste jsem si neudelal definitivni nazor
    URPUTNIK
    URPUTNIK --- ---
    URPUTNIK: kazdopadne to teda znamena, ze pro praci s privatni repo bude ta repo vzdycky soucasti cesty :/ mozna bych se dal provest nejaky MitM dns 'workaround', ale uz jsem si to sam zamitnul :)
    DEFILA: prijde mi, ze miris nekam do vnitrnosti dockeru, kam moje knowhow nesaha .. rozhodne ne takhle v noci :)
    DEFILA
    DEFILA --- ---
    URPUTNIK:
    ale vsak pojem namespace je spravny, kernel netusi co je to container - pouziva namespace(s) :)
    URPUTNIK
    URPUTNIK --- ---
    MARTEN: aha, jasny .. popravde ted nevim, z jakyho clanku to 'namespace' mam, myslel jsem ze to nadepisuje 'docker image(s)' pro sloupec, ale je tam jenom 'repository', co je pro mne teda taky zavadejici, ale to uz vem cert :)
    MARTEN
    MARTEN --- ---
    URPUTNIK: zalezi cemu rikas namespace. jestli tomu pred lomitkem, tak je to jen cesta. nginx, tedy bez casti pred lomitkem resolvuje docker agent jako hub.docker.com (tedy vse bez domeny) a pokud neni "namespace" tak pouzije podtrzitko.
    pokud mas vlastni hostovani imagu, tak pises celou cestu (pokud nezmenis defaultni) a tam adresaru muzes mit kolik chces.
    docker.domena.com/aaa/bbb/ccc/ddd:latest
    to ze nadocker hub je jen jeden je jen jejich nastaveni UI, ze nepovoli vic. definovane je v tagu kdyz vytvaris image

    docker build -t myname/image:latest
    docker push myname/image:latest

    v takovem pripade musis byt prihlasen k dane namespace na docker hub

    docker login
    URPUTNIK
    URPUTNIK --- ---
    URPUTNIK: ah, staci spravne zformulovat otazku .. tak "b" to jde pres docker CLI manifest, i do privatni repo .. kazdopadne tam teda namespace neni :/
    URPUTNIK
    URPUTNIK --- ---
    tak prece jen dotazy

    a) kde je receno, jaky namespace ma dany image? v manifestu? a z druhe stranu? kdyz klient stahuje image? aka neni mi jasne, proc nekdy fungujou 'zkraceny url' (aka 'docker pull nginx', pritom by to melo byt 'docker pull library/nginx' :/ mozna je to nejakej legacy resolving pro starsi verze?
    b) do se nejak do nexusu3 dostat custom image manifest? mozna pres API ..
    KING
    KING --- ---
    TRAGIKOMIX: Veros Kaplan myslim skoli Ansible a rozhodne bych ho doporucil - https://veroskaplan.cz/
    TRAGIKOMIX
    TRAGIKOMIX --- ---
    Zdravim, nedoporucil byste nekdo nejakou firmu/cloveka co skoli Docker/Kubernetes pripadne Ansible/Puppet?
    URPUTNIK
    URPUTNIK --- ---
    ADM: jojo, nechal jsem se zlakat moznosti nastavovat connectory :) proxy defakto vystavuje 443 (pro gui nexusu) a 2 porty pro docker repa (pro pull a pro push), samotny nexus posloucha normalne na 8081
    MUXX:mame tam nejaky ofiko of thawte, takze v pohode
    MUXX
    MUXX --- ---
    URPUTNIK: Jaky tam mas certifikat? Selfsigned nebo nejaky verejny/poradny? Ja to zkousel se selfsigned ale nakonec jsem to vzdal
    ADM
    ADM --- ---
    URPUTNIK: zrovna vcera jsem to delal, ale na tom jinym portu to byt prece musi, nebo ne? na proxy mam jen https offload a forward na ten docker registry na portu 8082, na 8081 je standardni nexus. je to teda docker 'hosted' registry (privatni) ne ten 'global' (proxy)
    URPUTNIK
    URPUTNIK --- ---
    URPUTNIK: ah, tak nakonec nastaveno .. nakonec to byl ten nejdefaultnejsi scenar, nechal jsem se zlakat moznosti nastavit http/s connector :)
    URPUTNIK
    URPUTNIK --- ---
    nastavovali jste docker repository do nexusu? jestli chapu oficialni napovedu spravne, tak proxy bude ven vystavovat 2 porty (pro pull a pro push), ktera bude pak forwardovat na nexus na http:8081 .. proc se pak ma ale nastavovat connector pro http/https pro repozitory? kdyz to na nexus bude forwardovany na 8081 :/
    MUXX
    MUXX --- ---
    Free eBook: Containerize Your Apps with Docker and Kubernetes @ Microsoft - OzBargain
    https://www.ozbargain.com.au/node/435550

    DirectLink: https://azure.microsoft.com/...-and-kubernetes/Containerize_your_Apps_with_Docker_and_Kubernetes.pdf
    MARTEN
    MARTEN --- ---
    Klidne bych zacal s dockerem pro lokalni vyvoj. Mam takhle vsechny projekty a ne vsechny pak v produkci opravdu bezi v dockeru, ale na vyvoj je to taky super. Kdyz tohle uvidis ze ti to funguje jak potrebujes, tak pak uz je to jen o tom, ze musis automatizovat vytvareni novych imagu pro nove verze. Ale minimalne v te dobe neco o dockeru uz budes vedet.
    Kliknutím sem můžete změnit nastavení reklam