Logsta sh in Docker не отвечает - PullRequest
       4

Logsta sh in Docker не отвечает

1 голос
/ 19 января 2020

Мне нужно перенести процесс ElasticSearch / Logsta sh с Windows на Docker. Этот процесс прекрасно работает в Windows (Elasticsearch и Logsta sh - это службы, в которых Logsta sh читает базу данных Oracle для подачи в ElasticSearch). Проблема в том, что когда я запускаю контейнер Logsta sh, Docker перестает отвечать на запросы и очень медленно, например, docker ps занимает одну минуту. Чтобы уничтожить контейнер logsta sh, требуется еще одна минута. Я запускаю это на Windows 10 Pro с Docker Desktop и выполнил эти шаги .

Я загрузил два изображения (asticsearch: 7.5.1 и logsta sh: 7.5.1) и запустил контейнеры с

docker run -d -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.5.1

и

docker run --name cont_logstash -d -e LIB=/usr/share/logstash/pipeline/ojdbc8.jar -e 
DRIVER=Java::oracle.jdbc.driver.OracleDriver -e CONN=jdbc:oracle:thin:@//172.0.0.2:51521/XE 
-e USER=userdb -e PASSWORD=xxx -v vol_logstash:/usr/share/logstash/pipeline/ logstash:7.5.1

Обратите внимание, что я создал том для хранения файла logsta sh .conf и ojdbc8.jar Oracle JDB C водитель. Если я создаю bash в контейнере Logsta sh, я вижу эти файлы в /usr/share/logstash/pipeline/.

. Мало того, что Docker очень медленный, но Logsta sh не работает на все. Если я запускаю Logsta sh в интерактивном режиме с -it, я получаю это (обратите внимание, что нет никаких предупреждений о настройке):

C: \ docker> docker run - -name cont_logsta sh -it -e LIB = / usr / share / logstash / pipe / ojdbc8.jar -e DRIVER = Java :: oracle .jdb c .driver.OracleDriver -e CONN = jdb c: oracle: thin: @ // localhost: 51521 / XE -e USER = userdb -e ПАРОЛЬ = xxx -v vol_logsta sh: / usr / share / logstash / pipeline / logsta sh: 7.5 .1

Предупреждение о виртуальной машине 64-разрядного сервера OpenJDK: параметр UseConcMarkSweepG C устарел в версии 9.0 и, вероятно, будет удален в следующем выпуске. ПРЕДУПРЕЖДЕНИЕ: произошла недопустимая операция доступа с отражением ПРЕДУПРЕЖДЕНИЕ: незаконный доступ с отражением от com.headius.backport9.modules.Modules (файл: / usr / share / logstash / logsta sh -core / lib / jars / j ruby - complete-9.2.8.0.jar) в поле java .io.FileDescriptor.fd ПРЕДУПРЕЖДЕНИЕ. Пожалуйста, рассмотрите возможность сообщения об этом сопровождающим com.headius.backport9.modules.Modules. ПРЕДУПРЕЖДЕНИЕ. Используйте --illegal-access = warn, чтобы включить предупреждения о дальнейших незаконных операциях доступа с отражением ВНИМАНИЕ: Все незаконные операции доступа будут запрещены в следующем выпуске

В соответствии с документацией Logsta sh на Docker регистрирует в консоли, но я не Я не вижу никаких ошибок на экране. Любые идеи, как подойти к этому?

ОБНОВЛЕНИЕ

Я запускаю другие контейнеры без проблем, в том числе базы данных 8,4 ГБ Oracle.

Это это то, что я вижу с помощью команды docker stats:

enter image description here

После того, как я отменяю контейнер logsta sh, статистика заполняется.

Ответы [ 2 ]

1 голос
/ 22 января 2020

Ноутбук может иметь 32 ГБ, но на используемом компьютере Hyper-V могут быть установлены нижние пределы (по умолчанию 2 ГБ). Все Java контейнеры требуют много памяти, потому что вы не ограничивали Java память (все -XX:*RAM* конфиги). Итак, сколько памяти потребляется контейнерами без logsta sh (вы можете увидеть это в docker stats) и сколько памяти сконфигурировано для ВМ (системный трей Докера-> Настройки-> Дополнительно)?

1 голос
/ 20 января 2020

Может быть проблема с ресурсом. Docker запускает виртуальную машину на хосте windows. Вы должны проверить, достаточно ли памяти, и выделено ли более одного ядра для виртуальной машины.

Если это не проблема, возможно, проверьте, включена ли виртуализация в b ios для хоста.

...