当每一行以交互方式运行时,Dockerfile都可以工作,但是使用docker build失败了

时间:2014-04-23 05:37:17

标签: build checksum docker sha

我有一个简单的Dockerfile下载node.js源tarball,校验和,提取,构建和安装它。在交互式docker容器中手动运行时校验和有效,但在构建Dockerfile时运行完全相同的命令时失败。

使用:

  

docker run -i -t ubuntu:12.04 / bin / bash

     

cd / tmp

     

apt-get update -y

     

apt-get install wget build-essential automake -y

     

wget http://nodejs.org/dist/latest/node-v0.10.26.tar.gz

     

wget http://nodejs.org/dist/latest/SHASUMS256.txt

     

sha256sum -c SHASUM256.txt 2>& 1 | grep -qs OK

     

tar -xvf node-v0.10.26.tar.gz&& cd node-v0.10.26

     

./ configure&&制造&& make install

不起作用:

  

sudo docker build -t =“my_docker_node_image_01”。

错误是:

sudo docker build -t="my_docker_node_image_01" .                                        
Uploading context 7.168 kB
Uploading context 
Step 0 : FROM ubuntu:12.04
 ---> 9cd978db300e
Step 1 : RUN cd /tmp
 ---> Using cache
 ---> 0467ad75bbd6
Step 2 : RUN apt-get update -y
 ---> Using cache
 ---> d2933f250090
Step 3 : RUN apt-get install wget build-essential automake -y
 ---> Using cache
 ---> e8a71b28782a
Step 4 : RUN wget http://nodejs.org/dist/latest/node-v0.10.26.tar.gz
 ---> Using cache
 ---> bae7de7b46f7
Step 5 : RUN wget http://nodejs.org/dist/latest/SHASUMS256.txt
 ---> Using cache
 ---> 245f6b6ceb84
 ---> 77532c879864
Step 6 : RUN sha256sum -c SHASUM256.txt 2>&1|grep -qs OK
 ---> Running in 77765e80f55b
2014/04/22 22:27:32 The command [/bin/sh -c sha256sum -c SHASUM256.txt 2>&1|grep -qs OK] returned a non-zero code: 1

我尝试将less SHASUMS256.txt添加到Dockerfile只是为了确认文件已成功下载未损坏,而且仍然是,但仍然会收到错误。

我不确定如何对此进行故障排除,因为通常我会手动运行交互式容器中的所有步骤以查看出现了什么问题。任何建议都非常赞赏。

1 个答案:

答案 0 :(得分:1)

我想我想出来了,这只是一个错字,至少当我剪切并粘贴上面的命令时!您下载SHASUMS256.txt,但针对名为SHASUM256.txt的文件(缺少S)进行测试。因为你扔掉了输出并将它传递给grep,你没有看到那个错误。

$ sha256sum -c SHASUM256.txt 
sha256sum: SHASUM256.txt: No such file or directory

$ sha256sum -c SHASUM256.txt 2>&1|grep -qs OK
$ echo $?
1

执行echo $?会告诉您执行的最后一个命令的返回码(在本例中为1)。通过更正文件,它现在适用于我:

 $ sha256sum -c SHASUMS256.txt 2>&1|grep -qs OK
 $ echo $?
 0