• ú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í
    WOODMAKER
    WOODMAKER --- ---
    REFLEX: zalezi na use-case.
    Normalne sluzby v dockeru, co potkavam, byvaji uvnitr jako root. A mivaji volumes, do kterych jim nikdo nesaha. A bavi se mezi sebou pomoci nejakych API jakoby po siti.

    takze budto udelas kazdej container s uzivatelem, coz mi prijde neprakticky
    Dockerfile:
    FROM ubuntu
    RUN useradd -m --uid 1000 --gid 1000 reflex
    USER reflex:reflex

    nebo nastavis uid:gid tomu uzivateli, co ma pustenej ten kontejner (WOODMAKER)

    nebo, pokud pracujes se souborem, ten soubor zpracujes jako root a pak mu nastavis, aby mel prava podle nejakyho jinyho souboru
    # touch /home/reflex/newfile
    # chmod -R --reference=/home/reflex /home/reflex/newFile
    REFLEX
    REFLEX --- ---
    INDIAN: toto jsem udelal

    RAGNAROK: WOODMAKER: aha, takze v containeru neni ten uzivatel, takze kdyz mam uzivatele reflex pustim docker-compose up tak vlastne v tom containeru je root a ten nema pristup k souborum co jsou pripojene pres volumes protoze vlastnik je reflex :D

    takze reseni je zalozit toho sameho uzivatele v dockeru?
    WOODMAKER
    WOODMAKER --- ---
    REFLEX:
    $ docker run --user $(id -u):$(id -g) ubuntu ls

    Akorat ten user pak uvnitr neexistuje, tak nefunguji veci jako $HOME a tak. Ale s absolutnima cestama by se mely vytvaret soubory se spravnym uid a gid.
    RAGNAROK
    RAGNAROK --- ---
    REFLEX:
    v hostovym systemu pridat nonroot usera do skupiny docker.
    v image (dockerfile) vytvorit nonroot usera se stejnym jmenem a id.
    akorat pak image musis buildit pro kazdyho usera zvlast.
    INDIAN
    INDIAN --- ---
    REFLEX:
    $  sudo usermod -aG docker $USER
    REFLEX
    REFLEX --- ---
    Jak se ma spravne nastavit docker, abych ho nemusel poustet jako sudo a v containeru nebyl problem s pravy a container na pripojenych souborech nevytvarel soubory pod rootem? :)
    GIOMIKY
    GIOMIKY --- ---
    ADMIX: Odstrasujici priklad!
    ADMIX
    ADMIX --- ---


    to nejak neodpovida na otazku proc bys delal to co delas, ale v tom puvodnim prispevku nevidim otazku - resis neco, nebo ses chtel jen podelit o zpusob jak neco nedelat? :D
    GIOMIKY
    GIOMIKY --- ---
    INDIAN: no vidis, zapomnel jsem to nejdulezitejsi...
    $ cat ~/.ssh/config
    Host dokrhost
      HostName 172.17.0.1
      User user
      Port 22
      ServerAliveInterval 60
      LocalForward 127.0.0.1:8080 127.0.0.1:8080
    ... Diky
    INDIAN
    INDIAN --- ---
    GIOMIKY: mozna bych ti pro zacatek odpovedel otazkou - k cemu potrebujes ssh v kontejneru ?
    GIOMIKY
    GIOMIKY --- ---
    Dalsi z cyklu, jak nepouzivat Docker. Tedy mejme Dockerfile. A predpokladejme, ze nechci pouzit presmerovani portu, protoze mi to zasahne do iptables a to se mi nelibit. Tak jsem dosel k reseni, kdyz si presmeruju pres ssh port a potom, napriklad, pristupuju na svuj pypi server.
    Neco jako:
    ...
    RUN nohup bash -c "/usr/bin/autossh -o "StrictHostKeyChecking=no" -M 0 -N -q dokrhost &" && pip3 install --force-reinstall --trusted-host 127.0.0.1 --index-url http://127.0.0.1:8080 myfancypkg
    JON
    JON --- ---
    Mam dotaz k ArgoCD - nevite nekdo o tom, jak/jestli tam jde udelat nejaky transformacni krok mezi repositarem podle ktereho syncuje a tim podle ceho syncuje?
    Treba slej helmcharty z N adresaru v tom repu dohromady, naaplikuj na to nejake templatovani apod.

    Samozrejme to jde udelat stylem: push do repositare A -> tam se pusti CI job, ktery provede ty transformace a pushne to do repositare B -> a podle repositare B to Argo vydeployuje. Ale moc se mi to takhle nelibi.
    JON
    JON --- ---
    MAJA: coz vo to, docker to ma zmaknuty dost dobre, ale lidi jsou kreativni :-)
    MAJA
    MAJA --- ---
    MLEKAR_STEIN: díky za postřehy ...

    čekal jsem, že to má docker nějak zmáknutý - nějaký docker backup/docker restore ale nic moc
    MLEKAR_STEIN
    MLEKAR_STEIN --- ---
    MAJA: zkontroloval bych

    1. jestli někdo neudělal symlink na
    /var/lib/docker případně na některé adresáře v něm. typicky jsem viděl symlink na /var/lib/docker/volumes kterej ukazoval někam na nějaký ssd disk
    2. podíval bych se do /etc/fstab, jestli není na.výše uvedené adresáře udělaný bind
    3. podíval bych se do lokální konfigurace systemd, která je někde v /etc jestli tam někdo néco vesele nepřenastavil.

    specielně bod 3 je docela zákeřný a umí potrápit stylem "jaktožesetopouštístímdleparametrem"

    ještě bych zkontroloval, jestli nějaký kontejner si nevyrábí nepojmenovaný volume pomocí direktivy v dockerfile. a nepoužívá to někdo jako že v tom má data
    viděl jsem takhle provozovaný postgres, kde po restartu se vývoj divil, kam jim zmizely data a že to musej pořád obnovovat.
    VELDRANE
    VELDRANE --- ---
    MAJA: jaky je problem si udelat male PoCko, kde vezmu images, prekopiruju je na cilovyc stroj, udelam kopii volumes za zaloh a predhodim to par testovacim uzivatelum pod jinou ip at mi otestuji zakladni funkce ?
    MAJA
    MAJA --- ---
    INDIAN: něco takového mám v plánu (myslím, že ani lidi vývojáři co to používají neví 100% co tam jak má být/je :-)

    ve /var/lib/docker jsou všechna data ? vč. volumes a sítování ?
    INDIAN
    INDIAN --- ---
    mno vono pokud clovek prijde k serveru kde bezi nezavisle na sobe nahodile nekolik kontejneru bez jakykoli spolecny deklarace, tak je prekopirovani natvrdo /var/lib/docker asi nejspolehlevejsi volba... jak sdelje zde MAJA - je treba na novym serveru nainstalovat stejnou verzi, nastavit pripadne dodatecny personalizace v daemon.json, stopnout vsechny kontejnery, zastavit na obou strojich docker.service a prekopirovat ze staryho zminenej obsah + samozrejme i veskery volumes ...

    ale samozrejme souhlasim, takhle by se to delat nemelo a pro budouci upravy by to melo bejt na novym stroji nainstalovany nejlip pomoci nakyho centralniho CI nastroje nebo orchestratoru.
    MAJA
    MAJA --- ---
    SH_PANDA: díky, vyzkouším ...
    MARTEN
    MARTEN --- ---
    HOUMLES: Jasne. Jako 99% procent volume mam v adresari projektu, aby se dobre kopirovalo. Ale historicky neco zustalo takhle blbe. Ale co jsem presouval ted, tak jen tarnul adresar s projektama, prekopirovat a vsude jen up. Jinak /var/lib/docker/volumes stejne ma jen ty. Ostatni adresare nepocitam, pokud existuje aspon compose.
    Ten mam rozchozeny kubernetes, tak jsem zvedav jak to pujde tam, az se budu zbavovat jednoho zeleza
    Kliknutím sem můžete změnit nastavení reklam