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