是否有最佳做法在docker alpine linux base image上设置glibc并使用正确的路径,以便任何衍生进程能正确引用已安装的libc库的位置?
答案 0 :(得分:18)
是的,
我已经使用自定义构建的glibc在其上安装JRE。
你可以找到它here
您可以使用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
它对我来说很完美
答案 1 :(得分:2)
apk add libgcc
这似乎使glibc
可用。
这样会将图像的大小增加了几MB。
答案 2 :(得分:1)
最佳做法是不在Alpine Linux上安装glibc。它使用musl libc代替,一个轻量级,快速,简单且符合标准的C库(即glibc不是的所有内容)。
不是在Alpine上安装glibc,而是为Alpine创建和/或打包您的依赖软件包和库。
对于python包,当在Alpine上运行时,setup.py程序通常会重新编译,而不是下载预建二进制文件。
对于java,请使用alpine openjdk而不是Oracle。
对于faiss,以及python中的其他与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
答案 3 :(得分:1)
我已经创建了一个github repo Docker build for glibc for alpine,支持多体系结构,即x86_64,aarch64等。您可以通过一个命令行命令针对任何CPU类型从最新的glibc源代码构建。它是从sgerrand's repo派生而来的,我进行了修改以支持多体系结构,并将构建器阶段和打包阶段合并为一行。或者,您可以只从发布页面下载预构建的软件包。
答案 4 :(得分:1)
到目前为止,每次安装 glibc 兼容库对我都有效
apk add libc6-compat
https://pkgs.alpinelinux.org/package/edge/main/x86/libc6-compat