如何在同一个容器中运行COPY和RUN命令?
我正在尝试从rpm文件安装java到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命令实际上是在同一个容器中运行,命令本身只是失败了,可能是因为你没有正确设置path。
下面是一个非常相似的docker文件的例子,这个文件的构build和运行是正确的(顺便说一下,不需要/ bin / sh -c,因为这正是运行命令所做的)
FROM centos:latest COPY test.bin /root/ RUN /bin/sh -c "chmod +x /root/test.bin"
有关运行命令的更多信息,请参阅https://docs.docker.com/reference/builder/#run
- 具有Apache Spark的Docker容器,处于独立群集模式
- 将NodeJS MongoClient连接到使用Docker的localhost mongodb
- Nginx与docker不工作的Web应用程序
- Docker + rails 4:奇怪的错误:运行bundle exec rake资源:预编译
- 使用–user参数来创build一个具有Dockerfile容器的用户
- 如何使用Jenkins在HTTP_PROXY后面创buildDockerfile?
- 如何为给定的Linux文件夹内的所有文件提供默认权限
- 在Docker中运行nodejs应用程序,将标准输出redirect到文件
- 静态转到二进制文件与Docker – 找不到入口点