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
僅僅是對文件進行復制,不會對復制的文件進行任何操作
解決方案
-
使用
COPY
和bzip2
ADD nmap-7.60.tar.bz2 /root/ RUN bzip2 -cd nmap-7.60.tar.bz2 | tar xvf - && \ cd nmap-7.60
-
只使用
ADD
,不再次解壓ADD nmap-7.60.tar.bz2 /root/ RUN cd nmap-7.60