• ú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í
    JON
    JON --- ---
    SYNTAX_TERROR: a jses si jistej, ze tu migraci chces spustet pokazdy?
    RUDOLF
    RUDOLF --- ---
    SYNTAX_TERROR: S PHP jsem nedělal roky ale vynechal bych entrypoint a do cmd bych narval php migracni_skrip && proces_ktery_pobezi_s_pid1_a_servuje_tvoji_appku
    SYNTAX_TERROR
    SYNTAX_TERROR --- ---
    Poradíte, jak po spuštění kontejneru spustit svůj php script?
    Zkouším to takto:
    ENTRYPOINT ["php"]
    CMD ["/var/www/html/bin/db-migration.php"]
    

    Ale to po doběhnutí php scriptu se stopne celý kontejner. To nechci, potřebuju, aby po dokončení toho scriptu kontejner dál běžel.
    MLEKAR_STEIN
    MLEKAR_STEIN --- ---
    ahoj,

    hledám, jak nějak šikovně evidovat výsledky buildů jenkinsu,
    primárně mi jde o docker images, ale hodily by se mi to i na jiný věci.
    příklad:
    mám udělaný build image, celé se to jmenuje třeba nějak takhle:
    example.com/buster-servicedolly:version-stage-date
    a krátké jméno s example.com/buster-servicedolly:version
    version je něco jako 11.12.13
    stage obsahuje něco jako qa, prod, dev
    pojmenování mám více méně daný.

    jde mi o to, jak si tohle někde evidovat s dalšími informacemi, jako třeba jméno projektu, ve kterých dalších projektech se to používá atd,
    abych mohl mít nějaký systém, kjterej by mi pak generoval do helmu rovnou správná jména.

    existuje na to něco, nebo neexistuje?
    URPUTNIK
    URPUTNIK --- ---
    a dalsi :) dava tohle smysl? v ramci dockerbuildu, proti debianu8 z docker hubu .. proc mi to nevyrobi /gitrepo/somerepo/.git ?
    
    RUN set -eux ; \
        eval $(ssh-agent -s) ; \
        echo "StrictHostKeyChecking no" >> /etc/ssh/ssh_config ; \
        ssh-add /tmp/id_rsa ; \
        cd /gitrepo/somerepo ; \
        git init ; \
        git config core.sparseCheckout true ; \
        echo "/some-path" >> .git/info/sparse-checkout ; \
        git clone --no-checkout --verbose --depth 1 --single-branch ssh://prg@server-with-repo/opt/repo/somerepo;
    

    ve vysledku
    
    ---> Running in 817d61d8a823
    + ssh-agent -s
    + eval SSH_AUTH_SOCK=/tmp/ssh-gEyJjSc9nOsw/agent.6; export SSH_AUTH_SOCK; SSH_AGENT_PID=7; export SSH_AGENT_PID; echo Agent pid 7;
    + SSH_AUTH_SOCK=/tmp/ssh-gEyJjSc9nOsw/agent.6
    + export SSH_AUTH_SOCK
    + SSH_AGENT_PID=7
    + export SSH_AGENT_PID
    + echo Agent pid 7
    Agent pid 7
    + echo StrictHostKeyChecking no
    + ssh-add /tmp/id_rsa
    Identity added: /tmp/id_rsa (rsa w/o comment)
    + cd /gitrepo/somerepo
    + git init
    Initialized empty Git repository in /gitrepo/
    + git config core.sparseCheckout true
    /bin/sh: 1: cannot create .git/info/sparse-checkout: Directory nonexistent
    
    URPUTNIK
    URPUTNIK --- ---
    tak zas troska za mne, kdyz pustim php kontejner v K8s, ktery potrebuje namountovat treba configMapu, tak narazim na to, ze bezici php pouziva v runtime uzivatele www-data, ale konfig, ktery tam strka K8s, je pod rootem .. snizovat omezeni na cteni samozrejme muzu (napr 666), ale predpokladam, ze se to typicky dela jinak?
    SYNTAX_TERROR
    SYNTAX_TERROR --- ---
    MUXX: Potřebuju se to naučit, tak zatím jedu podle tutošů. Ty příkazy jsou takhle za sebou uvedeny v "How to use" tady https://hub.docker.com/_/mariadb#how-to-use-this-image

    URPUTNIK: díky, vyzkoušim
    URPUTNIK
    URPUTNIK --- ---
    SYNTAX_TERROR:
    (1: docker run -it --network  a9e53e117a8d -p3306:3306 --rm mariadb) (2:mysql -hsome-mariadb -uexample-user -p)

    je spusteni docker image mariadb (1), s nastavenim networku, mapovani portu .. to co je 2, je pretizenej CMD do toho image, v tomhle pripade to spusti konzolovyho mysql klienta s parametrama (napriklad ta -h je zkracenina pro --host, cili mu rikas, na kterym hostu ma hledat databazi)

    koneckoncu, k mysql , doporucuju readme u oficialniho mysql image v hubu , tam je to vysvetleny v prikladech
    MUXX
    MUXX --- ---
    SYNTAX_TERROR: co vlastne potrebujes? prijde mi, ze nahodne placas nesouvisly prikazy z napovedy.

    docker run --name my-mariadb-container -p3306:3306 -e MYSQL_ROOT_PASSWORD=my-secret-pw -e MYSQL_DATABASE=my-db-name mariadb:latest


    Bylo by dobry predtim pozastavovat/smazat ty pokusny instance co uz tam mas.
    DEFILA
    DEFILA --- ---
    SYNTAX_TERROR:
    pokud si to pmatuju, tak docker vytvari virtualni bridge -> tedy 8e2bebc3ed4e; je tva odpoved; kdyz si vylistujes interfaces (ip a s); tak by ti IP mela souhlasit s tvym briddgem - docker network inspect JMENO
    SYNTAX_TERROR
    SYNTAX_TERROR --- ---
    MUXX: Přidal jsem, ale nepomohlo
    docker run -it --network  a9e53e117a8d -p3306:3306 --rm mariadb mysql -hsome-mariadb -uexample-user -p
    ERROR 2005 (HY000): Unknown MySQL server host 'some-mariadb' (-3)
    

    btw oproti kterýmu networku to mám spouštět? vypisuje mi to tu tyto 3:
    
    NETWORK ID          NAME                DRIVER              SCOPE
    8e2bebc3ed4e        bridge              bridge              local
    a9e53e117a8d        host                host                local
    3d426a569f8a        none                null                local
    
    MUXX
    MUXX --- ---
    Chybi ti tam port: -p3306:3306.
    SYNTAX_TERROR
    SYNTAX_TERROR --- ---
    čaute, jsem v Dockeru very newbie a potřeboval bych poradit s naprostým základem.

    Následuju postup z tohoto: https://hub.docker.com/_/mariadb
    První command proběhne:
    docker run --name some-mariadb -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mariadb:tag

    docker ps -a ten kontejner vypisuje:
    
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                    PORTS               NAMES
    33cc717656c6        mariadb             "docker-entrypoint.s…"   15 minutes ago      Up 15 minutes             3306/tcp            some-mariadb
    

    Moje první otázka je: KDE je otevřený ten port 3306? Když koukám na otevřený porty svého počítače, případně network interfacu označeného jako "Ethernet adapter vEthernet (DockerNAT)", tak tam žádný port 3306 otevřený není.

    Nicméně zkouším následující command z návodu
    
    docker run -it --network some-network --rm mariadb mysql -hsome-mariadb -uexample-user -p
    

    Což zkuchne na hlášce typu "some-network not found". Tak iniciativně (a asi blbě) spouštím docker network ls a IDcka jednotlivých interfaců vkládám do předchozího příkazu místo toho some-network.

    To už sice nechcípne na hlášce "network not found" a vyžaduje to po mě zadání hesla. Nějaké zadám a ve všech 3 případech (docker network ls mi vypisuje 3 networky) to skončí hláškou
    ERROR 2005 (HY000): Unknown MySQL server host 'some-mariadb' (-2)

    Něco dělám / chápu blbě?
    BLACKOUT
    BLACKOUT --- ---
    BLACKOUT: dost zalezi od toho ako a kde ti to bezi, ak to mas doma asi cez pipeline poriesit overenie ci je dany service up a potom proxy pass. ak pouzivas AWS tam by som skusil to lambdu, ak ineho cloud providera neviem ... ci azure / gck maju podobny "service" ako AWS.
    BLACKOUT
    BLACKOUT --- ---
    MARTEN: mozno by to riesilo AWS s Lambda, mat tam daky check ci je service hore ... ak nie pustit ... ale je to dost neprakticke riesenie.

    popr mat webhook na nejaku pipeline ktora urobi check (ak neni hore nahodi service) ak je hore tak exit 0 ... (to by slo urobit pekne cez gitlab).
    DWICH
    DWICH --- ---
    MARTEN: Podivej se na Google Cloud Run - je to sice beta, coz by ti vadit nemuselo a uctujou podle vseho jen za cas, kdy tvuj kontejner neco dela:
    Cloud Run  |  Google Cloud
    https://cloud.google.com/run/
    Pricing  |  Cloud Run Documentation  |  Google Cloud
    https://cloud.google.com/run/pricing

    Nebo na https://now.sh/
    ADMIX
    ADMIX --- ---
    MARTEN: Tak potom hledej serverless - https://github.com/fission/fission
    S tim uz ale vlastni zkusenost nemam :D
    MARTEN
    MARTEN --- ---
    DEFILA: Vim. Neni to pro produkcni veci. Bezi mi ale hodne service jako nastroje na vsechno mozne. Potrebuji je treba jednou tydne a netrapi me, ze prvni request bude trvat nekolik vterin. Sluzeb je vic a pokud by to melo porad bezet, tak by to bylo na muj vkus moc drahe.
    ADMIX: Jo, to jsem taky videl, ale chtel se tomu pokud mozno vyhnout. Pokud nepujde jinak, tak to pres to udelam.
    DEFILA
    DEFILA --- ---
    MARTEN: Hmm, to budeš mít, ale pekelne pomalé, pokud budeš chtít nahodit unitu jen ve chvíli, když tam někdo leze...
    ADMIX
    ADMIX --- ---
    MARTEN
    MARTEN --- ---
    Nevite nekdo o moznosti, jak automaticky spustit docker container pri prvnim pristupu? Idea je takova, ze bych mel nginx/traefik/haproxy a kdyz nekdo pristoupi na urcitou domenu, tak je bud poslan pres reverse proxy na dany container, nebo pokud nebezi, tak by se automaticky nejdrive spustil.
    Sluzby jako rancher, pokud se nepletu, resi pouze skalovani, ale pocitaji s tim, ze alespon jedna instance bezi. Super by to bylo na vice sluzeb, nejen web, ale i db,... Pokud by bylo manualne nastavit ktery docker-compose se ma nastartovat pro kterou domenu, taky by stacilo. Pokud neni hodinu zadny pristup, aby to container zase vypnulo.
    BLACKOUT
    BLACKOUT --- ---
    Ma niekto skusenosti s https://www.weave.works/oss/scope/ ?
    Kliknutím sem můžete změnit nastavení reklam