web-dev-qa-db-ja.com

Docker Alpine Linuxベースイメージにglibcをセットアップするベストプラクティスはありますか?

生成されたプロセスがインストールされたlibcライブラリの場所を正しく参照できるように、正しいパスでDocker Alpine Linuxベースイメージにglibcをセットアップするベストプラクティスはありますか?

29
kai

はいあります、

カスタムビルドのglibcを使用してJREをインストールしました。

あなたはそれを見つけることができます こちら

Wgetまたはcurlを使用してコードを取得し、apkでインストールできます

UPDATEDコマンドは以下のコメントを参照

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

それは私にとって完璧に働いた

23
carlomas

apk add libgcc

これにより、glibcが利用可能になります。これにより、イメージのサイズが数MB増えます。

1
KUNIMI Taiyoh

ベストプラクティスは、Alpine Linuxにglibcをnotインストールすることです。代わりに musl libc を使用します。軽量、高速、シンプル、標準に準拠したCライブラリ(つまり、glibcにはないすべて)です。

GlibcをAlpineにインストールする代わりに、Alpineの依存ソフトウェアパッケージとライブラリをビルドおよび/またはパッケージ化します。

  • pythonパッケージの場合、setup.pyプログラムは、Alpineで実行する場合、ビルド前のバイナリをダウンロードするのではなく、しばしば再コンパイルします。

  • Javaの場合、Oracleの代わりにAlpine openjdkを使用します。

  • 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
0
Jakub Jirutka