我有一个要构建的Docker映像,当我在Windows和Mac Docker上运行build命令时,它可以正常运行并正确构建,但是如果我在具有docker的Ubuntu-Server VM上运行相同的Dockerfile-Build,我会得到一个错误.
我的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/ [...]
@H_404_10@但是在ubuntu服务器上,VM在RUN mv失败,执行/usr/local/-step
并产生以下错误:
Step 10/24 : RUN mv go /usr/local/ ---> Running in 6b79a20769eb mv: cannot stat ‘go’: No such file or directory
@H_404_10@而且我想它不能正确提取下载的tar.gz(但下载有效)
你们有什么主意吗?
最佳答案
这是17.06中的一个已知问题,并在17.06.1中进行了修补.记录的行为是下载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
修复PR:https://github.com/docker/docker-ce/pull/89
编辑,最大程度地减少映像中的层数,建议您在Dockerfile中作为单个RUN命令进行下载,解压缩和清理.例如.这是两个不同的Dockerfile:
$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 .
@H_404_10@构建输出在此处被截断…
$docker build -t test-tgz-add -f df.tgz-add . ... $docker build -t test-tgz-curl -f df.tgz-curl . ...
@H_404_10@它们运行相同:
$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
@H_404_10@但是,只需执行一次RUN下载,生成和清理操作,即可从图层历史记录中节省80MB的下载:
$docker images | grep test-tgz test-tgz-curl latest 2776133659af 30 seconds ago 269MB test-tgz-add latest d625455998ff 2 minutes ago 359MB
@H_404_10@