Open ondrejhlavacek opened 7 years ago
Not possible, container commands not accessible, eg. ping: permission denied (are you root?)
.
martin [12:50 PM] a kdyz by to nespoustelo docker pod rootem? (edited)
najlos [12:55 PM] hm, https://docs.docker.com/engine/installation/linux/linux-postinstall/#manage-docker-as-a-non-root-user
[12:56] takže by se to vyhodilo ze sudoers a managovalo přes groupu, vyzkouším (edited)
new messages martin [12:58 PM] jj takhle to ma ECS optimized ami
[12:58]
[ec2-user@connection-testing-sapi-ecs-i-0e9e62636f2001145 ~]$ groups
ec2-user wheel docker
(edited)
[ec2-user@kbc-devel-02 ~]$ sudo docker run --user $(id -u):$(id -g) alpine ping google.com
PING google.com (216.58.198.78): 56 data bytes
ping: permission denied (are you root?)
[ec2-user@kbc-devel-02 ~]$ sudo docker run --user $(id -u):$(id -g) centos ping google.com
PING google.com (216.58.198.78) 56(84) bytes of data.
64 bytes from dub08s02-in-f14.1e100.net (216.58.198.78): icmp_seq=1 ttl=45 time=1.08 ms
64 bytes from dub08s02-in-f14.1e100.net (216.58.198.78): icmp_seq=2 ttl=45 time=1.16 ms
takže je to problém konkrétního image.
Tady https://github.com/gliderlabs/docker-alpine/issues/253 jsem se dočetl, že může pomoct nainstalovat jinej ping
[ec2-user@kbc-devel-02 ~]$ cat Dockerfile
FROM alpine
RUN apk update && \
apk upgrade && \
apk add iputils
[ec2-user@kbc-devel-02 ~]$ sudo docker build . -t alpine-ping-test
...
[ec2-user@kbc-devel-02 ~]$ sudo docker run --user $(id -u):$(id -g) alpine-ping-test ping google.com
PING google.com (216.58.198.78) 56(84) bytes of data.
64 bytes from dub08s02-in-f14.1e100.net (216.58.198.78): icmp_seq=1 ttl=45 time=1.09 ms
64 bytes from dub08s02-in-f78.1e100.net (216.58.198.78): icmp_seq=2 ttl=45 time=1.17 ms
Takže to bude asi konrkétni instalace pingu nebo "unprivileged icmp sockets". Jdu to zkoumat dál.
wget
projde
[ec2-user@kbc-devel-02 ~]$ sudo docker run --user $(id -u):$(id -g) alpine wget https://raw.githubusercontent.com/keboola/kbc-ui/master/package.json -O /tmp/wget.test
Connecting to raw.githubusercontent.com (151.101.0.133:443)
wget.test 100% |*******************************| 5033 0:00:00 ETA
a curl
jede bez instlace něčeho navíc?
jdu zkusit
curl v alpine není :-)
[ec2-user@kbc-devel-02 ~]$ sudo docker run --user $(id -u):$(id -g) -it alpine /bin/sh
/ $ curl
/bin/sh: curl: not found
aha, tvl, to znamená že PHP appky přes guzzle tam fallbackují na něco jinýho?
no a nebo instalace PHP instaluje i curl?
Mě teda curl šel:
apk add curl
(1/4) Installing ca-certificates (20171114-r0)
(2/4) Installing libssh2 (1.8.0-r2)
(3/4) Installing libcurl (7.59.0-r0)
(4/4) Installing curl (7.59.0-r0)
Executing busybox-1.27.2-r8.trigger
Executing ca-certificates-20171114-r0.trigger
OK: 19 MiB in 23 packages
No ale to jsi ho instaloval ručně, v čistým alpine mi ho to teď nenašlo. V php:7-cli
je curl, ale zase tam není ping.
Nebo když pustíš docker run alpine curl google.com
, tak ti to proběhne?
jo, sorry já myslel jako jestli jede když se tam doinstaluje. V php php:7-alpine
vidím že už je.
No tak to samozřejmě jede :-)
Takže jsem prostě měl pech, že na alpine byl špatnej ping a normálně by to mělo jet. 👿
Je možný, že to způsobí ještě nějakou neplechu, takže bych to udělal následovně
0) ~Zkusit pár komponent ručně~ 1) Bude se to zapínat přes featuru komponenty, nové komponenty to budou automaticky mít všechny zapnuté 2) Postupně to zapneme na našich komponentách (testovací job by to měl všechno odhalit, procesory si budeme muset vyzkoušet ručně) 3) Pak bych vytáhl seznam nejpouživanějších komponent, a ty, které dokážeme nakonfigurovat, bych otestoval bokem, jinak bych to asi loopnul s vendorama 4) Pokud během toho nenarazíme na žádnej problém, tak bych to zapnul pro všechny
Jo, to by bylo super!
stejně to asi bude feature na developer-portal ne?
nj, to bude
0) zkusit pár jobů ručně
Pustil jsem několik S3 extractor jobů s procesorama, zanořenejma folderama atd a vše proběhlo bez problémů, ještě jsem to ověřoval variantou bez normalizace a bez usera, kdy to vyfailovalo na oprávněních.
co je normalizace?
chmod ( = normalizace opravneni)
@Halama @odinuv mam takovej blbej pocit, že z tohodle se může stát dlouhodobej strašák (než to probublá před developer portal, developer portal ui, synchronzační skript, apod), tak co kdybych to prostě nadrzo zapnul? asi bych to dokázal v developer portalu i UI udělat, ale byla by to pro mě velká odbočka, a než se k tomu někdo dostane, může to trvat :-(
Můžu featuru zapnout přes projekty.
to je chaoticky, kdyz narazime na komponentu, ktera s tim nepojede, tak co? budem sledovat ve kterych projektech je nakonfigurovana? co kdyz si ji tam nekdo prida?
v devportal ui to (hned) byt nemusi
navic na to bez toho component flagu ani nepujdou napsat testy ne?
To by asi šly, ale bylo by to komplikovanější. No chtěl jsem to jenom odbavit, když víme, jak na to, a ne to nechávat měsíce otevřený. V UI to bejt nemusí, pravda, klidně nikdy :-)
tak jsem se ještě trochu začetl a odložím si
http*://github.com/moby/moby/issues/22322 (maskuju link, ať se tam neobjevíme :-)) tady to sváděj na libnetwork, poptal jsem, jak to můžu debugovat. networky nevytváříme, takže to asi nebude ono
https://meta.discourse.org/t/cant-install-discourse-with-only-10-gb-disk-run-out-of-space/29149/35
https://serverfault.com/questions/782059/make-docker-containers-deletion-faster-for-arch-linux
https://medium.com/@shagabutdinov/fixing-slow-docker-rm-d70f98024fb3
hora hejtu na devicemapper, doporučujou aufs, ofiko dokumentace (https://docs.docker.com/storage/storagedriver/select-storage-driver/) označuje devicemapper jako has very poor performance
podle ^^^ bych teda asi zkusil jinej storage driver
(https://docs.docker.com/storage/storagedriver/select-storage-driver/#suitability-for-your-workload)
na testing jsem nahodil overlay2
a zkouším, co udělá
{
"mtu": 1500,
"debug": false,
"storage-driver": "overlay2",
"log-opts": {
"max-size": "10m",
"max-file": "1"
}
}
integrační orchestrace se zrychlila z 6:40 na 4:40 https://connection.keboola.com/admin/projects/395/orchestrations/292003114
jdu to zkusit na devel-03 a pustit proti tomu celej test
ten write uvnitr kontejneru by nas vubec nemel trapit, data i tmp mame pres volume a jinam v podstate neni duvod zapisovat
@odinuv jde taky o to, jak jsou uložený metadata kontejnerů a podobný věci, dost to může ovlivnit
na devel-03 overlay2 nenastartuju, takže bych asi pustil něco ostřejšího na tom testingu
co to pustit na travisu?
Tam se dá nastavit Docker storage driver?
Nojo, na travisu to vypadá na default na overlay2
, takže všechny testy tam už teda proběhly.
Je to tak
$ docker info
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 0
Server Version: 17.09.0-ce
Storage Driver: overlay2
...
(https://travis-ci.org/keboola/docker-bundle/jobs/389526100#L565 via https://github.com/keboola/docker-bundle/commit/f7440d9c0f1b39fddfc0bedaf468500157926bde)
udělal jsem na testingu stress test
5x ./vendor/bin/phpunit Tests --filter ImageBuilderTest
5x sudo docker build . -t test --no-cache
(https://bitbucket.org/mhumpolec/kbc-salesforce-extractor/src/master/Dockerfile, byl zrovna po ruce)
devicemapper se sekl a docker build
jel úplně příšerně, během 10 minut nebyl schopnej těch 5 images zbuildovat, stejně tak nedoběhly ani ty testy
overlay2 doběhl jako by se nechumelilo, než jsem sepsat tenhle comment, doběhlo všeh 5 buildů a všechny testy
to vypada az neuveritelne dobre!
io + net stress test 1: https://connection.keboola.com/admin/projects/232/applications/keboola.custom-science-php/402881536 io + net stress test 2: https://connection.keboola.com/admin/projects/232/writers/keboola.wr-db-snowflake/402880583 cpu stress test: https://connection.keboola.com/admin/projects/578/transformations/bucket/sys.c-tr-r-transformations/transformation/get-tree-nesting-level-p3
příprava custom science php base image
git clone https://github.com/keboola/docker-custom-php /home/deploy/docker-custom-php
sudo docker build /home/deploy/docker-custom-php -t docker-custom-php
příprava custom science builder image
FROM docker-custom-php
RUN git clone -b master --depth 1 https://github.com/keboola/snowflake-optimization /home/
RUN composer install
CMD php /home/main.php
sudo docker build /home/deploy/stresstest-01-a -t stresstest-01-a
sudo docker run --volume /home/deploy/stresstest-01-a:/data --volume /tmp/stresstest-01-a:/tmp --memory 8192m --memory-swap 8192m --net bridge --cpus 2 --env KBC_DATADIR=/data/ --name stresstest-01-a stresstest-01-a
to nedám, je tam custom snowflake driver
příprava image
git clone https://github.com/keboola/r-transformation /home/deploy/r-transformation
sudo docker build /home/deploy/r-transformation -t r-transformation
sudo docker run --volume /home/deploy/stresstest-02-a:/data --volume /tmp/stresstest-02-a:/tmp --memory 8192m --memory-swap 8192m --net bridge --cpus 2 --env KBC_DATADIR=/data/ --name stresstest-02-a r-transformation
Full suite, pouštěno ve screenách
mkdir /tmp/stresstest-01-a
mkdir /tmp/stresstest-01-b
mkdir /tmp/stresstest-01-c
mkdir /tmp/stresstest-01-d
mkdir /tmp/stresstest-02-a
mkdir /tmp/stresstest-02-b
mkdir /tmp/stresstest-02-c
mkdir /tmp/stresstest-02-d
time sudo docker run --volume /home/deploy/stresstest-01-a:/data --volume /tmp/stresstest-01-a:/tmp --memory 8192m --memory-swap 8192m --net bridge --cpus 2 --env KBC_DATADIR=/data/ --name stresstest-01-a stresstest-01-a
time sudo docker run --volume /home/deploy/stresstest-01-b:/data --volume /tmp/stresstest-01-b:/tmp --memory 8192m --memory-swap 8192m --net bridge --cpus 2 --env KBC_DATADIR=/data/ --name stresstest-01-b stresstest-01-b
time sudo docker run --volume /home/deploy/stresstest-01-c:/data --volume /tmp/stresstest-01-c:/tmp --memory 8192m --memory-swap 8192m --net bridge --cpus 2 --env KBC_DATADIR=/data/ --name stresstest-01-c stresstest-01-c
time sudo docker run --volume /home/deploy/stresstest-01-d:/data --volume /tmp/stresstest-01-d:/tmp --memory 8192m --memory-swap 8192m --net bridge --cpus 2 --env KBC_DATADIR=/data/ --name stresstest-01-d stresstest-01-d
time sudo docker run --volume /home/deploy/stresstest-02-a:/data --volume /tmp/stresstest-02-a:/tmp --memory 8192m --memory-swap 8192m --net bridge --cpus 2 --env KBC_DATADIR=/data/ --name stresstest-02-a r-transformation
time sudo docker run --volume /home/deploy/stresstest-02-b:/data --volume /tmp/stresstest-02-b:/tmp --memory 8192m --memory-swap 8192m --net bridge --cpus 2 --env KBC_DATADIR=/data/ --name stresstest-02-b r-transformation
time sudo docker run --volume /home/deploy/stresstest-02-c:/data --volume /tmp/stresstest-02-c:/tmp --memory 8192m --memory-swap 8192m --net bridge --cpus 2 --env KBC_DATADIR=/data/ --name stresstest-02-c r-transformation
time sudo docker run --volume /home/deploy/stresstest-02-d:/data --volume /tmp/stresstest-02-d:/tmp --memory 8192m --memory-swap 8192m --net bridge --cpus 2 --env KBC_DATADIR=/data/ --name stresstest-02-d r-transformation
Cures the chown script in https://github.com/keboola/syrup-router/issues/64