Docker删除下载的文件

我正在尝试设置一个Docker容器来testing一个Magento扩展。 我希望这样做,像这样的Dockerfile:

FROM php:5.4-apache WORKDIR /var/www/html ADD http://www.magentocommerce.com/downloads/assets/1.9.0.1/magento-1.9.0.1.tar.gz /var/www/html # Other installation steps 

但是那失败了:

 2014/09/27 17:03:25 lchown /mnt/sda1/var/lib/docker/aufs/mnt/d5ced8f20d760458093f2993ea25ffa9a644c93d5b134e793f820f53dfc2d70d/var/www/html/tmp: not a directory 

我收集它与我在OS X上使用boot2docker有关。(我回想起OS X与Docker存在一些文件系统共享问题。)所以我再次尝试使用这个Dockerfile:

 FROM php:5.4-apache WORKDIR /var/www/html # We should be able to use ADD to fetch a remote file, but # something is causing that to fail (OS X Docker limitations, I guess?) RUN ["/usr/bin/curl", "-O", "http://www.magentocommerce.com/downloads/assets/1.9.0.1/magento-1.9.0.1.tar.gz"] RUN ["/bin/tar", "-xzf", "magento-1.9.0.1.tar.gz"] # Other installation steps 

当我运行上面的时候,curl执行得很好,并且没有错误退出,但是最终的容器不包含下载的文件,所以下游的tar命令失败了。

 Step 2 : RUN ["/usr/bin/curl", "-O", "http://www.magentocommerce.com/downloads/assets/1.9.0.1/magento-1.9.0.1.tar.gz"] ---> Running in 2695c5e95f77 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 21.9M 100 21.9M 0 0 817k 0 0:00:27 0:00:27 --:--:-- 842k ---> bb716a60c4ef Removing intermediate container 2695c5e95f77 Step 3 : RUN ["/bin/tar", "-xzf", "magento-1.9.0.1.tar.gz"] ---> Running in 95cc533947c1 tar (child): magento-1.9.0.1.tar.gz: Cannot open: No such file or directory tar (child): Error is not recoverable: exiting now /bin/tar: Child returned status 2 /bin/tar: Error is not recoverable: exiting now 2014/09/27 17:07:47 The command [/bin/tar -xzf magento-1.9.0.1.tar.gz] returned a non-zero code: 2 

如果我检查中间容器,文件确实不在那里。

 $ docker run bb716a60c4ef /bin/sh -c 'pwd && ls -al' /var/www/html total 8 drwxr-xr-x 2 www-data www-data 4096 Sep 27 21:09 . drwxr-xr-x 4 root root 4096 Sep 23 11:09 .. 

那么它到底在哪里,我如何设置一个Dockerfile来允许我下载和修改文件系统?

这里有几件事要注意。 我将从第一个Dockerfile开始,因为那个修复很简单:

 FROM php:5.4-apache WORKDIR /var/www/html ADD http://www.magentocommerce.com/downloads/assets/1.9.0.1/magento-1.9.0.1.tar.gz /var/www/html/ # Other installation steps 

你懂了吗? 将/添加到目标的末尾会告诉ADD命令将其视为一个文件夹。 请参阅https://docs.docker.com/reference/builder/#add上复制规则的第三个要点。

第二个Dockerfile对我来说有点神秘。 但我怀疑它与父图像设置/var/www/html作为一个卷跳过层版本。 请参阅https://github.com/docker-library/php/blob/master/5.4/apache/Dockerfile#L46