2017-04-04 75 views
2

我使用的是alpine linux容器,特別是python:3.4-alpineopenjdk:8-jdk-alpine。當我嘗試執行任何可執行腳本或可執行文件時,我會收到Not Found錯誤。無法從高山linux容器內運行jfrog可執行文件

例如。當在python:3.4-alpine容器中我想安裝jfrog我按照命令here(在我通過apk安裝curl之後)。這個命令下載一個shell腳本並管理它,以便下載並創建一個具有正確權限的可執行文件jfrog。當我試圖運行這個可執行文件我得到

bin/sh: ./jfrog: not found

更新

我發現的根用戶使用默認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。 您可以嘗試添加apk add libc6-compat但我不確定它會起作用

+0

nope:/我想我將不得不使用curl而不是'jfrog' – LetsPlayYahtzee

1

問題是,jfrog cli是針對glibc和alpine linux編譯的,只提供了uclibc。爲了使它在阿爾卑斯山下運行並不重要,你必須安裝比阿爾卑斯山環境更大的沙箱。 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

我收到了關於「你目前不在分支上」的錯誤。當試圖使用dockerfile時 – rwilson04

+0

不得不使用'RUN GOOS = linux go get github.com/jfrogdev/jfrog-cli-go/jfrog-cli/jfrog' – rwilson04

相關問題