De acordo com Práticas recomendadas para escrever Dockerfiles ,
Although
ADDandCOPYare functionally similar, generally speaking, COPY is preferred. That’s because it’s more transparent thanADD.
ADD pode extrair arquivos tar e buscar arquivos URL remotos, embora não esteja muito claro na documentação oficial . Também é importante afirmar que,
Because image size matters, using
ADDto fetch packages from remote URLs is strongly discouraged; you should usecurlorwgetinstead.
COPY entrypoint.sh /srv/app/
ADD app.tar /srv/app/
Portanto, a regra geral é como @derobert mencionado, use COPY a menos que você precise de ADD de recursos exclusivos.