0

我正在尝试将 java 从 rpm 文件安装到 docker centos 映像。

> 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 文件的示例,它可以正确构建和运行(顺便说一下,不需要 /bin/sh -c,因为这正是 run 命令正在执行的操作)

FROM centos:latest

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

有关运行命令的更多信息,请参阅https://docs.docker.com/reference/builder/#run

于 2014-12-16T11:20:50.360 回答