Я начинаю работать с большими моделями и другими активами, связанными с машинным обучением, и мне нужно решение, как справиться с этим в контексте разработки Docker.

Можно соблазниться объемами. К сожалению, тома не переносятся между машинами.

Можно можно просто связать ресурсы непосредственно с изображением с помощью простого копирования. Это прекрасно работает до определенного момента.

Проблема в том, что кто-то, скорее всего, захочет быть эффективным и максимально использовать преимущества слоев образа Docker.

Образы Docker как библиотека активов

Докерское многоступенчатое строительство спешит на помощь.

Хитрость в том, что можно использовать изображения с тегами в качестве предопределенного этапа сборки.

Чтобы создать «образ актива», сначала создайте Dockerfile для образа.

FROM scratch
COPY <assets> /

Замените <assets> активами, которые вы хотите сохранить

Далее создайте образ

$ build -t 'registry_host/asset/foo:0.1' .

Я бы предложил придерживаться соглашения об именах, которое сделает очевидным, для чего оно используется. Я использую /asset ты делаешь.

По сути, тег изображения становится URI актива, что упрощает работу с ним как в вычислительном, так и в когнитивном отношении.

Важно отметить, что этот тег является универсальным, и его можно извлекать/проталкивать и ссылаться на него на разных машинах, используя существующую инфраструктуру реестра/репозитория Docker.

Используйте активы в изображениях

COPY --from=registry_host/asset/foo:0.1 / /assets/

Для бонусных баллов также можно использовать команду — ссылка для КОПИРОВАТЬ, если/когда доступно.

Краткое содержание

Использование образов с тегами в сочетании с многоэтапными сборками приводит к более быстрой сборке и развертыванию, а также к более эффективному использованию дискового пространства.

Первоначально опубликовано на https://github.co/matthewjosephtaylor.