Dockerfile COPY:"lchown ...不是目录"

kgu*_*win 9 docker

试图构建这个Dockerfile:

FROM dockerfile/ubuntu

RUN apt-get update && apt-get install -y apache2

COPY proxypass.conf /etc/apache2/sites-available
COPY caching.conf /etc/apache2/conf-available
RUN a2ensite proxypass \
    && a2enconf caching \
    && a2disconf serve-cgi-bin

EXPOSE 80

CMD ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]
Run Code Online (Sandbox Code Playgroud)

proxypass.confcaching.conf文件都位于apache与沿目录Dockerfile.

Running docker build给出了这个输出:

$ sudo docker build -t me/apache apache
Sending build context to Docker daemon  29.7 kB
Sending build context to Docker daemon 
Step 0 : FROM dockerfile/ubuntu
 ---> 77f8745ed183
Step 1 : RUN apt-get update && apt-get install -y apache2
 ---> Using cache
 ---> d62d92d91591
Step 2 : COPY proxypass.conf /etc/apache2/sites-available
2014/10/16 09:02:32 lchown /u01/docker/devicemapper/mnt/38bcd5cca695b4e9ac9af77e0342f85dea9fb10a238f7bd5173289bb956cf5c8/rootfs/etc/apache2/sites-available/proxypass.conf: not a directory
Run Code Online (Sandbox Code Playgroud)

这是Oracle Linux 6.5(主要是CentOS 6.5).

$ sudo docker info
Containers: 1
Images: 113
Storage Driver: devicemapper
 Pool Name: docker-8:2-1308404-pool
 Data file: /u01/docker/devicemapper/devicemapper/data
 Metadata file: /u01/docker/devicemapper/devicemapper/metadata
 Data Space Used: 4307.1 Mb
 Data Space Total: 102400.0 Mb
 Metadata Space Used: 5.5 Mb
 Metadata Space Total: 2048.0 Mb
Execution Driver: native-0.2
Kernel Version: 2.6.32-358.23.2.el6.x86_64
Username: kgutwin
Registry: [https://index.docker.io/v1/]
Run Code Online (Sandbox Code Playgroud)

Tho*_*eil 32

Dockerfile COPY指令的文档说:

如果<dest>不以尾部斜杠结束,则它将被视为常规文件,并且将写入<src>的内容.

因此,只需/为目标目录添加一个,您就可以构建您的图像:

COPY proxypass.conf /etc/apache2/sites-available/
COPY caching.conf /etc/apache2/conf-available/
Run Code Online (Sandbox Code Playgroud)

  • 可以改进该错误消息. (7认同)