0

rpm ファイルから docker centos イメージに Java をインストールしようとしています。

> Step 0 : FROM centos:latest
 ---> **34943839435d**
Step 1 : COPY . jdk-6u45-linux-x64-rpm.bin
 ---> **2055e5db6ae9**
Removing intermediate container 7ae13aaa4424
Step 2 : RUN chmod +x jdk-6u45-linux-x64-rpm.bin &&     sh jdk-6u45-linux-x64-rpm.bin
 ---> Running in **c4d6b63576bc**
jdk-6u45-linux-x64-rpm.bin: jdk-6u45-linux-x64-rpm.bin: is a directory
2014/12/16 06:03:34 The command [/bin/sh -c chmod +x jdk-6u45-linux-x64-rpm.bin &&  sh jdk-6u45-linux-x64-rpm.bin] returned a non-zero code: 126

それが与えるエラーは、異なるコンテナが原因のようです。同じコンテナでコマンドを実行するには?

Dockerファイルは以下のとおりです

FROM    centos:latest

# Install Java.
COPY . jdk-6u45-linux-x64-rpm.bin

RUN chmod +x jdk-6u45-linux-x64-rpm.bin && \
        sh jdk-6u45-linux-x64-rpm.bin
4

2 に答える 2

2

の構文COPYは次のとおりです。

COPY <src>... <dest>

したがってCOPY . jdk-6u45-linux-x64-rpm.bin、現在のディレクトリをとしてコピーすることを意味しますjdk-6u45-linux-x64-rpm.bin。したがって、エラー。

これにより、必要なものが得られるはずです。

COPY jdk-6u45-linux-x64-rpm.bin jdk-6u45-linux-x64-rpm.bin
于 2014-12-16T11:20:24.710 に答える
0

RUN コマンドは実際には同じコンテナーで実行されています。おそらく、パスを正しく設定しなかったために、コマンド自体が単に失敗しました。

これは、正しくビルドおよび実行される非常によく似た docker ファイルの例です (ちなみに、これはまさに run コマンドが行っていることなので、/bin/sh -c は必要ありません)。

FROM centos:latest

COPY test.bin /root/
RUN /bin/sh -c "chmod +x /root/test.bin"

run コマンドの詳細については、https://docs.docker.com/reference/builder/#runを参照してください。

于 2014-12-16T11:20:50.360 に答える