🟢 Лёгкий · 1 очк. Docker
Чем COPY отличается от ADD в Dockerfile?
A Ничем
B ADD умеет распаковывать архивы и загружать по URL
C COPY быстрее
D ADD только для бинарных файлов
Объяснение вопроса

COPY только копирует файлы и директории из контекста сборки в образ. ADD дополнительно умеет распаковывать tar-архивы и скачивать файлы по URL. Best practice - использовать COPY, если не нужны эти возможности.

COPY

COPY package.json ./
COPY src/ /app/src/
# Предсказуемо: берёт только то, что указано

ADD

ADD archive.tar.gz /opt/   # распакует в /opt/
ADD https://example.com/file.tar.gz /tmp/  # скачает (не рекомендуется: кеш сложнее)

Почему предпочитают COPY

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

Если нужна распаковка - лучше COPY archive.tar.gz /tmp/ и отдельно RUN tar -xzf /tmp/archive.tar.gz -C /opt/.

🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.