В чем разница между инструкциями ADD и COPY в Dockerfile

Как я вижу из комментариев в исходниках в: vendor/src/github.com/opencontainers/runc/libcontainer/factory_linux. go

// Cgroupfs is an options func to configure a LinuxFactory to return
// containers that use the native cgroups filesystem implementation to
// create and manage cgroups.

cgroupfs, похоже, является собственной реализацией docker (libcontainer), которая настраивает контейнеры cgroups на запись непосредственно в файлы на cgroups-file-system (например, смонтированные в /sys/fs/cgroup/).

5
06.03.2017, 18:22
2 ответа

Согласно Рекомендации по написанию файлов Docker ,

Хотя ADD и COPY функционально схожи, в общем, COPY - это предпочтительнее. Это потому, что он более прозрачен, чем ADD .

ADD может извлекать файлы tar и получать удаленные файлы URL, хотя это не очень ясно в официальной документации . Также важно указать, что,

Поскольку размер изображения имеет значение, использование ADD для получения пакетов с удаленных URL-адресов категорически не рекомендуется; вместо этого вам следует использовать curl или wget .

COPY entrypoint.sh /srv/app/
ADD app.tar /srv/app/

Таким образом, общее правило, как указано в @derobert, используйте COPY , если вам не нужны эксклюзивные функции ADD .

5
27.01.2020, 20:34

ADD выполняет гораздо больше "магии": он находит URL и распаковывает архивы. Это может быть несколько неожиданно (особенно распаковка архивов). Официальное руководство по лучшей практике рекомендует использовать COPY, если вам не нужны дополнительные возможности ADD.

6
27.01.2020, 20:34

Теги

Похожие вопросы