簡體   English   中英

如何在同一容器中運行COPY和RUN命令?

[英]How to run the COPY and RUN command in same container?

我正在嘗試將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

COPY語法如下:

COPY <src>... <dest>

所以COPY . jdk-6u45-linux-x64-rpm.bin 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

您的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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM