Я начинаю работать с большими моделями и другими активами, связанными с машинным обучением, и мне нужно решение, как справиться с этим в контексте разработки 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.