Quarkus入门运行Native镜像提示GLIBC版本缺失问题求助
Quarkus Native镜像运行失败:GLIBC版本不匹配问题
我正在跟着Quarkus入门教程操作,生成了4种不同的Dockerfile。为体验Native特性,按教程步骤执行,前面都正常,但运行Dockerfile.native或Dockerfile.native-micro构建的镜像时失败,报错如下:
./mvnw package -Dnative podman build -f src/main/docker/Dockerfile.native-micro -t quarkus/order-processor-dapr . podman run -i --rm -p 8080:8080 quarkus/order-processor-dapr ... ./application: /lib64/libc.so.6: version `GLIBC_2.33' not found (required by ./application) ./application: /lib64/libc.so.6: version `GLIBC_2.32' not found (required by ./application) ./application: /lib64/libc.so.6: version `GLIBC_2.34' not found (required by ./application)
这是官方开箱即用的教程,我不认为Podman是问题所在,疑惑是不是漏了配置或者环境有问题。附上Native版Dockerfile内容:
FROM registry.access.redhat.com/ubi8/ubi-minimal:8.9 WORKDIR /work/ RUN chown 1001 /work \ && chmod "g+rwX" /work \ && chown 1001:root /work COPY --chown=1001:root target/*-runner /work/application EXPOSE 8080 USER 1001 ENTRYPOINT ["./application", "-Dquarkus.http.host=0.0.0.0"]
解决方法
容器化构建Native可执行文件(推荐)
不要在本地直接构建Native包,改用Quarkus的容器化构建方式,确保构建环境和运行镜像的系统库版本一致:./mvnw package -Dnative -Dquarkus.native.container-build=true该命令会使用Quarkus官方提供的容器镜像构建Native产物,生成的可执行文件能完美适配UBI 8环境。
升级运行镜像的UBI版本
若坚持本地构建,可将Dockerfile的基础镜像替换为UBI 9(其GLIBC版本为2.34,满足依赖要求):FROM registry.access.redhat.com/ubi9/ubi-minimal:9.2修改后重新构建镜像并运行即可。
检查本地构建环境的GLIBC版本
执行ldd --version查看本地系统的GLIBC版本,若远高于UBI 8的2.28,要么切换到容器化构建,要么更换为更低版本的系统环境构建Native包。
内容的提问来源于stack exchange,提问作者Pompey Magnus
相关产品推荐
相关产品推荐

