首页 文章

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

提问于
浏览
0

我有一个简单的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 && 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 回答

  • 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
    

相关问题