Dockerfile ADD tar.gz不会在具有Docker的Ubuntu VM上提取

我有一个Docker Image,我想要构build,当我在Windows和Mac Docker上运行build命令时,它工作正常,构build正确,但是如果我在docker上运行相同的Dockerfile -Ubuntu-Server VM,错误。

我的Dockerfile的关键部分是:

[...] # Dependencies RUN apt-get update && apt-get install -y apt-utils curl git tar gzip # Install Go ENV GO_VERSION 1.8 WORKDIR /tmp ADD https://storage.googleapis.com/golang/go$GO_VERSION.linux-amd64.tar.gz ./ RUN mv go /usr/local/ [...] 

但是在Ubuntu服务器上,VM在RUN mv go /usr/local/ -step时失败

并产生以下错误:

 Step 10/24 : RUN mv go /usr/local/ ---> Running in 6b79a20769eb mv: cannot stat 'go': No such file or directory 

我想它不会正确提取下载的tar.gz(但下载工作)

你们有什么想法吗?

这是一个17.06的已知问题,并在17.06.1中进行了修补。 logging的行为是下载tgz,但从远程URL拉取时不解压。 tgz的自动解包是17.06年的一个意外的行为改变,他们在17.06.1恢复到只下载tgz。

17.06发行说明(请参阅顶部的说明): https : //github.com/docker/docker-ce/releases/tag/v17.06.0-ce

17.06.01的发行说明: https : //github.com/docker/docker-ce/releases/tag/v17.06.1-ce

问题: https : //github.com/moby/moby/issues/33849

修复公关: https : //github.com/docker/docker-ce/pull/89


编辑,尽量减less图像中的图层数量,我build议在Dockerfile中将下载,解包和清理作为一个单独的RUN命令。 例如这里有两个不同的Dockerfiles:

 $ cat df.tgz-add FROM busybox:latest ENV GO_VERSION 1.8 WORKDIR /tmp ADD https://storage.googleapis.com/golang/go$GO_VERSION.linux-amd64.tar.gz ./ RUN tar -xzf go$GO_VERSION.linux-amd64.tar.gz \ && rm go$GO_VERSION.linux-amd64.tar.gz CMD ls -l . $ cat df.tgz-curl FROM busybox:latest ENV GO_VERSION 1.8 WORKDIR /tmp RUN wget -O go$GO_VERSION.linux-amd64.tar.gz https://storage.googleapis.com/golang/go$GO_VERSION.linux-amd64.tar.gz \ && tar -xzf go$GO_VERSION.linux-amd64.tar.gz \ && rm go$GO_VERSION.linux-amd64.tar.gz CMD ls -l . 

生成输出被截断在这里…

 $ docker build -t test-tgz-add -f df.tgz-add . ... $ docker build -t test-tgz-curl -f df.tgz-curl . ... 

他们运行一致:

 $ docker run -it --rm test-tgz-add total 4 drwxr-xr-x 11 root root 4096 Aug 31 20:27 go $ docker run -it --rm test-tgz-curl total 4 drwxr-xr-x 11 root root 4096 Aug 31 20:29 go 

但是,执行一次单独的下载,编译和清理,可以节省您从图层历史logging中下载的80MB的空间:

 $ docker images | grep test-tgz test-tgz-curl latest 2776133659af 30 seconds ago 269MB test-tgz-add latest d625455998ff 2 minutes ago 359MB