我有一个简单的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 回答
我想我想出来了,这只是一个错字,至少当我剪切并粘贴上面的命令时!您下载
SHASUMS256.txt
但针对名为SHASUM256.txt
的文件进行测试(缺少S
) . 因为你扔掉了输出并将它传递给grep,你没有看到那个错误 .执行
echo $?
会告诉您执行的最后一个命令的返回码(在本例中为1
) . 通过更正文件,它现在适用于我: