У меня есть загрузочное приложение Spring, которое я добавил в Docker-контейнер openjdk
.Это приложение хорошо работает на моей архитектуре amd64
.Но когда я собираю и запускаю контейнер на Raspberry Pi arm32v7
, время загрузки составляет 5-6 минут.
FROM openjdk:11-jdk-slim-stretch
VOLUME /tmp
ADD ./target/app-1.0.0-SNAPSHOT.jar /app.jar
EXPOSE 5001 5002
ENV JAVA_OPTS=""
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]
Запуск этого контейнера следующей командой:
docker run -p 5000:5000 --memory=200mb --cpuset-cpus="0-3" my_app
Я вижу 100-200% загрузки процессора, и относительно нет использования памяти.Примерно через 3 минуты приложение Spring Boot начинает работать, и для его полного запуска требуется около 5 минут.
То, что я пробовал;
- Запустил Jar вне контейнера док-станции, он сразу запустился.
- Сравнил использование памяти контейнера
amd64
с контейнером arm32v7
.Оба кажутся сопоставимыми.amd64
показывает около 200 МБ памяти. - Увеличил объем памяти и установил количество доступных процессоров
Почему мой контейнер Docker версии 18.09.0 работает медленно на RaspberryPi 3 B +?
ОБНОВЛЕНИЕ
Я изменил openjdk:11-jdk-slim-stretch
на другие изображения (resin/rpi-raspbian
, 8u201-jre-alpine3.9
).Все имеют одинаковый результат, очень, очень медленно.