我正在尝试将rpm文件中的java安装到docker centos image。
> 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
答案 0 :(得分: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
答案 1 :(得分:0)
你的RUN命令实际上是在同一个容器中运行,命令本身就失败了,可能是因为你没有正确设置路径。
这是一个非常相似的docker文件的例子,它可以正确构建和运行(顺便说一句,不需要/ bin / sh -c,因为这正是run命令正在做的事情)
FROM centos:latest
COPY test.bin /root/
RUN /bin/sh -c "chmod +x /root/test.bin"
有关run命令的详细信息,请参阅https://docs.docker.com/reference/builder/#run