Dockerfile 中的 COPY 与 ADD 命令

 COPY 与 ADD 命令的区别:


1. COPY 命令区别于 ADD 命令的一个用法是在 multistage 场景下。在 multistage 的用法中,可以使用 COPY 命令把前一阶段构建的产物拷贝到另一个镜像中

FROM alpine:latest
RUN apk --no-cache add ca-certificates
WORKDIR /root/
COPY --from=0 /go/src/github.com/sparkdevo/href-counter/app .
CMD ["./app"]

其中的 COPY 命令通过指定 --from=0 参数,把前一阶段构建的产物拷贝到了当前的镜像中。

 

2. 除了不能用在 multistage 的场景下,ADD 命令可以完成 COPY 命令的所有功能,并且还可以完成两类超酷的功能:

  • 解压压缩文件并把它们添加到镜像中 
    WORKDIR /app
    ADD nickdir.tar.gz .
  • 从 url 拷贝文件到镜像中 (不推荐使用, 建议使用wget、curl代替, 原因是,当使用 ADD 命令时,会创建更多的镜像层,当然镜像的 size 也会更大)
    ADD http://example.com/big.tar.xz /usr/src/things/
    RUN tar -xJf /usr/src/things/big.tar.xz -C /usr/src/things
    RUN make -C /usr/src/things all

转:

https://www.cnblogs.com/sparkdev/p/9573248.html

posted @ 2020-11-25 11:58  会飞的猿  阅读(1199)  评论(0编辑  收藏  举报