坑(六)—— dockerfile中COPY与ADD

Dockerfile中ADD与COPY

注意点

  • COPY复制的是指定目录下的文件,不会复制该目录

    up@up123:~/a$ ls
    a.txt b.txt c.txt
    
    COPY a /root/
    
    # 镜像root目录下,没有目录a
    # a.txt b.txt c.txt
    

问题

在Dockerfile中使用 ADD将文件复制到镜像的指定目录下

ADD nmap-7.60.tar.bz2 /root/

RUN bzip2 -cd nmap-7.60.tar.bz2 | tar xvf -

原因

ADD除了普通的复制文件,对于压缩文件,会先解压再将解压后的文件夹复制到镜像中

COPY仅仅是对文件进行复制,不会对复制的文件进行任何操作

解决方案

  1. 使用COPYbzip2

    ADD nmap-7.60.tar.bz2 /root/
    
    RUN bzip2 -cd nmap-7.60.tar.bz2 | tar xvf - && 
    		   cd nmap-7.60
    
  2. 只使用ADD,不再次解压

    ADD nmap-7.60.tar.bz2 /root/
    
    RUN cd nmap-7.60
    
原文地址:https://www.cnblogs.com/linagcheng/p/13451671.html