2017-04-04 34 views
2

alpine linuxコンテナを使用しており、具体的にはpython:3.4-alpineopenjdk:8-jdk-alpineです。私が実行可能ファイルに置いたスクリプトや実行可能ファイルを実行しようとすると、私はNot Foundエラーを受け取ります。アルパインのlinuxコンテナから実行可能なjfrogを実行できません

たとえば、 python:3.4-alpineコンテナの中にjfrogをインストールしたい場合は、(私がcurlをapk経由でインストールした後)のコマンドに従います。このコマンドは、シェルスクリプトをダウンロードしてshにパイプし、適切なアクセス権を持つjfrog実行ファイルをダウンロードして作成します。私は、この実行可能ファイルを実行しようとしているとき、私は

bin/sh: ./jfrog: not found

更新

を取得しています私は、rootユーザーが、私はそれが何であるか見当がつかないデフォルトでbin/ashを、使用していることを発見しました。だから私は手動でbin/sh jfrogを呼び出して、私は

/ # bin/sh jfrog jfrog: line 1: ELF: not found jfrog: line 1: syntax error: unterminated quoted string

私が間違っているの何任意のアイデアを得ますか?私はそれがコンテナ内に存在するrootユーザーだけと関係していると考えます。

+0

詳細が必要だと思います。 http://stackoverflow.com/help/mcveを参照してください。 – BMitch

+0

質問を更新しました – LetsPlayYahtzee

答えて

1

あなたが実行しているスクリプトがで始まります

#!/bin/bash 

バッシュは、デフォルトでは高山には含まれていません。高山はかなりデザインでストリップダウンされているので、あなたは、このスクリプトを動作させるために追加する必要があります他の行方不明の依存関係があるかもしれないこと

apk update && apk add bash 

注:あなたがそれをインストールすることができます。

+0

私の問題はアルプスのLinuxコンテナで 'jfrog'を実行する方法であることが判明したので、もう少し具体的な質問をしました。あなたの提案は 'ubuntu'コンテナの問題を解決しましたが – LetsPlayYahtzee

2

は私はわからないが、jfrogの実行可能ファイルが動的にリンクされ、そしてldd jfrogであなたが得る:

ldd jfrog 
    /lib64/ld-linux-x86-64.so.2 (0x55ffb4c8d000) 
    libpthread.so.0 => /lib64/ld-linux-x86-64.so.2 (0x55ffb4c8d000) 
    libc.so.6 => /lib64/ld-linux-x86-64.so.2 (0x55ffb4c8d000) 

あなたはlibcの依存関係を持って見ることができる、と高山はMUSLが付属していたよう。 それは

+0

nope:/私は' jfrog'の代わりにcurlを使わなければならないと思います – LetsPlayYahtzee

1

問題がある動作しますあなたはapk add libc6-compatを追加しようとすることができますが、私はわからないんだけど、そのjfrogのCLIは、glibcのとuClibcをを提供する唯一の高山のLinuxに対してコンパイルされました。それをアルパインの下で動作させるには、それほど些細なことではなく、アルパインの環境よりも大きなサンドボックスをインストールする必要があります。 https://wiki.alpinelinux.org/wiki/Running_glibc_programs

別の方法として、jfrogバイナリをアルパインでコンパイルすることもできます。このDockerfileは私のために働いた。

FROM golang:alpine 
WORKDIR /app/ 
RUN apk update && apk add git 

# checkout the latest tag of jfrog cli 
RUN mkdir -p /go/src/github.com/jfrogdev/jfrog-cli-go \ 
&& git clone https://github.com/JFrogDev/jfrog-cli-go /go/src/github.com/jfrogdev/jfrog-cli-go\ 
&& cd /go/src/github.com/jfrogdev/jfrog-cli-go \ 
&& git checkout $(git describe --tags `git rev-list --tags --max-count=1`) 

RUN GOOS=linux go get github.com/jfrogdev/jfrog-cli-go/jfrog 

FROM alpine 
COPY --from=0 /go/bin/jfrog /usr/bin/ 

ENTRYPOINT ["jfrog"] 
+0

"あなたは現在支店にいません"というエラーが出ました。そのドッカーファイルを使用しようとしたとき – rwilson04

+0

代わりに 'RUN GOOS = linux go github.com/jfrogdev/jfrog-cli-go/jfrog-cli/jfrog'を使用しなければならなかった – rwilson04

関連する問題