Проблема в том, что в базовом образе одновременно установлены две версии libc
- GNU libc
и musl libc
:
$ docker run -it progrium/busybox
/ #
/ # /lib64/libc.so.6
GNU C Library (Buildroot) stable release version 2.18, by Roland McGrath et al.
<...>
/ #
/ # /lib64/libc.so
musl libc (x86_64)
<...>
Пакет libc
, предоставляемый opkg, равен musl libc
, и все двоичные файлы из пакетов opkg создаются на его основе.Это включает в себя zlib
, поэтому получается, что musl libc
является транзитивной зависимостью для двоичного файла Java.
Однако сам двоичный файл Java в вашем случае построен на GNU libc
, так что вы получите дваlibc
версии загружаются одновременно:
/ # LD_DEBUG=libs /opt/jdk/jdk-11.0.2/bin/java
<...>
572: calling init: /lib64/libc.so
<...>
572: calling init: /lib/libc.so.6
Результат довольно непредсказуемый , и в вашем случае это ошибка сегментации.
Если выЕсли вы хотите загрузить сборку JDK с официального сайта OpenJDK, вы должны использовать сборку Alpine Linux OpenJDK, поскольку Alpine также использует musl libc
.
К сожалению, эта сборка отсутствует для OpenJDK 11, но вы можете проверить, что Ранний доступ OpenJDK 13 сборка для Alpine Linux работает довольно хорошо (но обратите внимание, что не стабильная версия сборки!).