在 docker alpine linux 基础映像上设置 glibc 并使用正确的路径,以便任何衍生进程都能正确引用已安装的 libc 库的位置,这方面是否存在最佳实践?
最佳实践是在 Alpine Linux 上安装 glibc。它使用的是 [拉丁语],一个轻量级、快速、简单且符合标准的 C 库(也就是说,glibc 不具备的所有特性)。
与其在 Alpine 上安装 glibc,不如为 Alpine 构建和/或打包您依赖的软件包和库。
对于 python 包,当在 Alpine 上运行时,setup.py 程序通常会重新编译,而不是下载预先构建的二进制文件。
对于 java,使用 alpine openjdk 而不是 Oracle。
对于 python 中的 faiss 和其他与 numpy 相关的库(从 https://gist.github.com/orenitamar/f29fb15db3b0d13178c1c4dd611adce2复制)
FROM alpine:3.4 RUN echo "http://dl-cdn.alpinelinux.org/alpine/latest-stable/main" > /etc/apk/repositories RUN echo "http://dl-cdn.alpinelinux.org/alpine/latest-stable/community" >> /etc/apk/repositories RUN apk --no-cache --update-cache add gcc gfortran python python-dev py-pip build-base wget freetype-dev libpng-dev openblas-dev RUN ln -s /usr/include/locale.h /usr/include/xlocale.h RUN pip install numpy scipy pandas matplotlib
有的,
我使用了一个定制的 glibc 来安装 JRE。
你可以找到它 给你
可以使用 wget 或 curl 获取代码并使用 apk 安装它们
更新命令见下面的注释
apk --no-cache add ca-certificates wget wget -q -O /etc/apk/keys/sgerrand.rsa.pub https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub wget https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.28-r0/glibc-2.28-r0.apk apk add glibc-2.28-r0.apk
对我来说很有效
我创建了一个 github repo 阿尔卑斯山 Glibc 码头建造,支持 multi-arch,比如 x86 _ 64、 aarch64等等。只需一行命令就可以从最新的 glibc 源代码为任何 CPU 类型构建。它是从 Sgerrand 的回购协议分叉,我修改为支持多拱,并结合到一个单一的生产阶段和包装阶段。或者你可以直接从发布页面下载预先构建好的软件包。
到目前为止,安装 glibc 兼容性库对我来说每次都很管用
apk add gcompat
Https://pkgs.alpinelinux.org/package/edge/community/x86_64/gcompat