1、docker 构建自定义镜像copy与add的区别

copy指令和add指令的唯一区别在于:是否支持从远程URL获取资源。

COPY指令只能从执行docker build所在的主机上读取资源并复制到镜像中。而ADD指令还支持通过URL从远程服务器读取资源并复制到镜像中。

相同需求时,推荐使用COPY指令。ADD指令更擅长读取本地tar文件并解压缩。

ADD和COPY指令

COPY同ADD的语法一致,复制拷贝文件。

ADD 复制新文件、目录或远程文件 URL <src> ,并将它们添加到<dest>中。

<src>可以指定多个资源,但如果它们是文件或目录,则它们的路径被解释为相对于构建上下文的源,也就是_WORKDIR_。

例如:docker add  http://www.example.com/test.pdf  test.pdf

docker copy  就不能执行这个命令

2、CMD 与 ENTRYPOINT 与RUN 区别

有三种格式

CMD ["<executable>","param1","param2",...]

CMD command param1 param2

CMD ["param1","param2"]

ENTRYPOINT 指定这个容器启动的时候要运行的命令

ENTRYPOINT ["executable", "param1", "param2",...]

RUN ["executable", "param1", "param2"] (exec 形式)

RUN <command>

RUN ["/bin/bash","-c","<executable>","param1","param2",...]