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
Maxim
оперативки достаточно, на диске места тоже достаточно
Дело не в достаточном количестве ресурсов, дело в том достаточно ли выделено ресурсов selenium
toobinks
Как понять что именно не хватает?
George
free -m
George
в момент запуска selenium
George
а еще луше htop запусти и смотри
Maxim
а еще луше htop запусти и смотри
а чем это может помоч определить сколько выделено и сколько необходимо выделить?
toobinks
смотреть в контейнере?
George
а чем это может помоч определить сколько выделено и сколько необходимо выделить?
ну, если память на системе подходит к кнуц, то очевидно, что и в контейнере тоже
George
смотреть в контейнере?
нет, на хосте смотри
toobinks
но памяти помойка
George
что значит помойка?
toobinks
4Гб точно не использовано
George
дай выхлоп посмотреть
George
и еще селениум жрет памяти не в себя
toobinks
выхлоп лога?
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
Сколько памяти на машине ? Процов ?
Borik
памяти 8 гиг, процов два реальных
George
Попробуй на этапе билда
Borik
так на этапе билда и виснет...
Borik
поскольку контейнер для билда создается и подвисает, то я в него могу подключиться руками и там что-то сделать.
Borik
нет, вру, 6 гиг и два проца.
George
А докерфайл покажи
Borik
Borik
все останавливается перед ...
Borik
... я заменил то, что nda
George
слишком много RUN
Borik
эм... проблема наблюдается только на убунте, на дебиане и на винде он собирается без проблем.
Borik
ну и, собственно, не очень понятно, как избавиться от ранов...
Borik
и, опять же, чем плохо много ранов?
George
я сейчас проверяю
George
ща погоди
Borik
угу...
George
итак
George
я взял чистый дебиан стреч
George
root@db7c6d5fb8b9:/# python3 -m pip install requests-unixsocket Collecting requests-unixsocket Downloading https://files.pythonhosted.org/packages/f3/94/67d781fb32afbee0fffa0ad9e16ad0491f1a9c303e14790ae4e18f11be19/requests-unixsocket-0.1.5.tar.gz Collecting requests>=1.1 (from requests-unixsocket) Downloading https://files.pythonhosted.org/packages/51/bd/23c926cd341ea6b7dd0b2a00aba99ae0f828be89d72b2190f27c11d4b7fb/requests-2.22.0-py2.py3-none-any.whl (57kB) 100% |################################| 61kB 961kB/s Collecting urllib3>=1.8 (from requests-unixsocket) Downloading https://files.pythonhosted.org/packages/e6/60/247f23a7121ae632d62811ba7f273d0e58972d75e58a94d329d51550a47d/urllib3-1.25.3-py2.py3-none-any.whl (150kB) 100% |################################| 153kB 1.1MB/s Collecting certifi>=2017.4.17 (from requests>=1.1->requests-unixsocket) Downloading https://files.pythonhosted.org/packages/60/75/f692a584e85b7eaba0e03827b3d51f45f571c2e793dd731e598828d380aa/certifi-2019.3.9-py2.py3-none-any.whl (158kB) 100% |################################| 163kB 3.8MB/s Collecting idna<2.9,>=2.5 (from requests>=1.1->requests-unixsocket) Downloading https://files.pythonhosted.org/packages/14/2c/cd551d81dbe15200be1cf41cd03869a46fe7226e7450af7a6545bfc474c9/idna-2.8-py2.py3-none-any.whl (58kB) 100% |################################| 61kB 2.7MB/s Collecting chardet<3.1.0,>=3.0.2 (from requests>=1.1->requests-unixsocket) Downloading https://files.pythonhosted.org/packages/bc/a9/01ffebfb562e4274b6487b4bb1ddec7ca55ec7510b22e4c51f14098443b8/chardet-3.0.4-py2.py3-none-any.whl (133kB) 100% |################################| 143kB 3.3MB/s Building wheels for collected packages: requests-unixsocket Running setup.py bdist_wheel for requests-unixsocket ... done Stored in directory: /root/.cache/pip/wheels/ed/b6/4d/69a487a03941e256568ad8155ffdf1374f5ed90f1c82bf5160 Successfully built requests-unixsocket Installing collected packages: certifi, urllib3, idna, chardet, requests, requests-unixsocket Found existing installation: idna 2.2 Not uninstalling idna at /usr/lib/python3/dist-packages, outside environment /usr Successfully installed certifi-2019.3.9 chardet-3.0.4 idna-2.8 requests-2.22.0 requests-unixsocket-0.1.5 urllib3-1.25.3 root@db7c6d5fb8b9:/#
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