toobinks
seluser@b55aec4c432e:/$ df -H
Filesystem Size Used Avail Use% Mounted on
overlay 491G 101G 366G 22% /
tmpfs 8.4G 0 8.4G 0% /dev
tmpfs 8.4G 0 8.4G 0% /sys/fs/cgroup
/dev/sdb2 491G 101G 366G 22% /etc/hosts
shm 68M 0 68M 0% /dev/shm
tmpfs 8.4G 0 8.4G 0% /sys/firmware
toobinks
Как понять что именно не хватает?
George
free -m
George
в момент запуска selenium
George
а еще луше htop запусти и смотри
toobinks
смотреть в контейнере?
George
toobinks
но памяти помойка
sakura
George
что значит помойка?
toobinks
4Гб точно не использовано
George
дай выхлоп посмотреть
George
и еще селениум жрет памяти не в себя
toobinks
выхлоп лога?
George
George
типикал ошибка - интепретация результатов команд
toobinks
free -m
total used free shared buff/cache available
Mem: 15939 8293 1720 940 5925 6367
Swap: 2047 319 1728
toobinks
selenium_1 | 08:48:29.346 INFO [GridLauncherV3.parse] - Selenium server version: 3.141.59, revision: e82be7d358
selenium_1 | 08:48:29.454 INFO [GridLauncherV3.lambda$buildLaunchers$5] - Launching Selenium Grid hub on port 4444
selenium_1 | library initialization failed - unable to allocate file descriptor table - out of memory/opt/bin/start-selenium-hub.sh: line 21: 19 Aborted (core dumped) java ${JAVA_OPTS} -jar /opt/selenium/selenium-server-standalone.jar -role hub -hubConfig ${CONF} ${SE_OPTS}
selenium_1 | 2019-06-08 08:48:30,279 INFO exited: selenium-hub (exit status 134; not expected)
George
да, ты прав, памяти вагон
George
https://superuser.com/questions/1413352/running-jdk-8-in-docker-suddenly-broken-on-arch-linux-with-unable-to-allocate-f
George
гуголь
George
-ulimit nofile=122880:122880
George
это не с памятью проблема, а с лимитами, очевидно
George
https://github.com/neo4j/docker-neo4j/issues/155
toobinks
Borik
привет!
не могу поставить внутрь докера requests-unixsocket. все остальное ставится без проблем, а это яйцо не работает (
на хостовую машину ставится. а внутрь докера - нет. причем оно не вылетает с ошибкой, а просто затыкается. ставлю так:
pip3 install requests-unixsocket
пока оно там висит, заходил в этот контейнер ручками и пытался сделать pip3 -vv install requests-unixsocket, на выходе вот такое:
https://pastebin.com/qTYqidXu
Borik
подозреваю нехватку каких-то ресурсов, но не могу понять, каких :(
George
George
Сколько памяти на машине ? Процов ?
Borik
памяти 8 гиг, процов два реальных
George
Попробуй на этапе билда
Borik
так на этапе билда и виснет...
Borik
поскольку контейнер для билда создается и подвисает, то я в него могу подключиться руками и там что-то сделать.
Borik
нет, вру, 6 гиг и два проца.
George
George
А докерфайл покажи
Borik
Borik
все останавливается перед ...
Borik
... я заменил то, что nda
George
слишком много RUN
Borik
эм... проблема наблюдается только на убунте, на дебиане и на винде он собирается без проблем.
Borik
ну и, собственно, не очень понятно, как избавиться от ранов...
Borik
и, опять же, чем плохо много ранов?
George
я сейчас проверяю
George
George
ща погоди
Borik
угу...
George
итак
George
я взял чистый дебиан стреч
George
все ок
George
root@db7c6d5fb8b9:/# history
1 python3
2 apt update && apt install python3
3 python3 --version
4 python3 -m pip
5 apt install python3-pip
6 python3 -m pip
7 python3 -m pip install requests-unixsocket
8 history
George
все что я запустил в контейнере
George
я тебе рекомендую поменять порядок установки пакетов
George
и, опять же, чем плохо много ранов?
смотри. В принципе это ничем не плохо. Кроме того обстоятельства, что каждый RUN создает новый слой. Общая линия партии - меньше слоев - лучше. Но перебарщивать не надо, т.к. слои между разными образами шарятся, поэтому если сделаешь слишком мало слоев - у тебя кэширование вылетает в трубу
George
второй нюанс заключается в том, что если ты гонишься за минимальным размером образа, то меньше RUN лучше, т.к. те файлы, которые были созданы, а потом удалены в рамках одного RUN - они не занимают места
George
представь себе, что докер образ - это моментальный снимок файловой системы (по сути это так оно и есть)
Borik
основную рекомендацию понял, ща попробую...
у меня докер используется для масштабирования разработки, поэтому мне кеширование надо постольку поскольку
George
RUN echo "net.core.somaxconn=65535" >> /etc/sysctl.conf
- это тоже 💩, т.к. ты sysctl можешь задавать при запуске контейнера в docker run .....
George
еще ты локаль генеришь в конце, а лучше ее генерить в начале (это для особо е*;?№*;?№* софта важно)
George
что еще. У меня такое ощущение, что ты в докере пытаешься стартовать несколько сервисов одновременно - и nginx, и tarantool, и maria .... хм
George
это оправданно?
George
CMD /start.py
George
это тоже 💩
George
потому что если ты захочешь передать аргументы командной строки, то они уйдут в /bin/bash, а не в start.py
George
лучше писать CMD ["/start.py"]
George
а еще лучше подумать и решить, что есть переменная часть команды запуска образа, а что постоянная
George
и постоянную вынести в ENTRYPOINT
George
пример
George
ENTRYPOINT ["python3", "/start.py"]
George
CMD [""]
George
ну, в общем это кратко если
George
@borikbobrujskov ?
zhdoon
@borikbobrujskov ?
Добрый день коллеги, у меня вопрос к знатокам, подскажите пожалуйста
в docker создал bridge сеть , внутри контейнера периодически идет трафик от клиента с его настоящим ip, но чаще что то происходит (как я понимаю на host машине в таблицах маршрутизации) и в контейнер залетают пакеты уже крашенные (от docker ip gateway),
как мне сказать сказать хост машине что не нужно маскарадить пакеты идующие в мою сеть (docker)?
посмотрел в сети, нашел
https://stackoverflow.com/questions/47537954/how-to-make-docker-container-see-real-user-ip
как я понял применятся правило маскарада с внешнего интерфейса в мною созданную сеть докера.
докер стоит на Debian9 внешний всего 1-н интерфейс
Borik
сорри, отвлекся, с сотого раза оно поставилось
George
@zhdoon первое о чем я бы подумал - а нужна ли докер сеть (бридж) или можно обойтись network host mode? как бонус - в этом случае проще настраивать файрволл
George
вторая история - можно запустить nginx отдельный, который будет отдавать в заголовках real-ip