• ú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í
    DANIELSOFT
    DANIELSOFT --- ---
    AQUARIUS: tohle je testovací throw-away virtuálka v R&D oddělení, žádná produkční nebo zákaznická data. ale chápu, co tím myslíš.
    AQUARIUS
    AQUARIUS --- ---
    DANIELSOFT: prijde mi, ze zabraneni podobnemu chovani (ja chci "jenom" ...) je primarni duvod, proc se kontejnery pouzivaji. Kdyz disciplina neni, je treba ji vynutit. Neber si to osobne, sam se tesim, az se moje produkcni prostredi dostane do podobneho stavu, aby kolegove nemohli "jenom" pres ssh menit nahodna nastaveni s tim, ze audit trail takovych akci se v lepsim pripade sestavuje hrozne spatne.
    ADM
    ADM --- ---
    DANIELSOFT: to xml je v containeru? pokud ano, tak neni jina moznost nez nova image
    DANIELSOFT
    DANIELSOFT --- ---
    velmi lama dotaz o Kubernetu: mám rozběhlý nějaký cluster, který nasetupoval kolega. dokážu reprodukovat chybu, kterou mám opravit. mám tam XML soubor, přidáním jednoho řádku by se měla opravit chyba (systém by se měl chovat jinak), zkusil jsem naivně editovat soubor vimem , který v kontejneru je, ale soubor je v nějakém read-only layeru, že ani když root udělá :w! nedaří se uložit změněný soubor

    je nějaký jednoduchý způsob, jak tam tu změnu podstrčit?

    systém je totiž velký a builduje a setupuje se složitým způsobem, do kterého jsem ještě nepronikl a když chci jenom změnit ten soubor, tak mi přijde nejpřímočařejší zkusit změnu nejdříve takhle ručně
    WOODMAKER
    WOODMAKER --- ---
    REFLEX: pro odretardovani se s pravama si dovolim to popsat:
    na disku jsou inody, kazdy ma sve cislo
    adresar je specialni typ inodu, ktery je oznacen jako adresar a jako obsah ma seznam paru jmeno:cislo inodu
    soubor je specialni typ inodu, ktery je oznacen jako soubor a obsah je obsah souboru

    A inode drzi ony atributy
    mode - typ a prava souboru
    link count - pocet odkazu (kolik na nej odkazuje adresaru - pokud to klesne na 0, inode se smaze)
    uid - cislo uzivatele
    gid - cislo skupiny
    nejaky dalsi malickosti a data

    snad ti to pomuze v reseni

    MARTEN
    MARTEN --- ---
    REFLEX: vytvareni stejneho uzivatele v image je dost na prd. Ale taky jsem to parkrat udelal. Jinak nejde o jmeno, ale musel by mit stejne UID
    WOODMAKER
    WOODMAKER --- ---
    REFLEX: ten soubor ma fyzicky v sobe ulozeny dve cisla - uzivatele a skupinu (a par dalsich, whatever). A ty dve cisla tam potrebujes predelat z jednoho systemu na druhej. Group docker asi neni to, co potrebujes.
    REFLEX
    REFLEX --- ---
    WOODMAKER: no to jsme cekal, ale je to normalne pres volumes pripojeny adresar, ale mel problem s opravnenim, mozna kdybych nastavil group slozky na docker...

    jsem na tyhle veci s pravama retard :D
    WOODMAKER
    WOODMAKER --- ---
    REFLEX: root ma pristup ke vsemu, pokud mu to nekam pripojis.
    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
    RAGNAROK
    RAGNAROK --- ---
    REFLEX:
    no reseni to je takovy trochu pojebany ale na jinej zpusob jsem neprisel.
    v docker-compose pak volume nabindujes:
    volumes:
    - ${HOME}/mujdir/:${HOME}/mujdir/:rw
    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 ?
    Kliknutím sem můžete změnit nastavení reklam