Докер: Можем ли мы повторно использовать слой изображения для создания другого изображения

На самом деле, версии стандарта C ++ до того, как C ++ 11 определили ключевое слово «export», [] , можно просто объявить шаблоны в файле заголовка и реализовать их в другом месте.

К сожалению, ни один из популярных компиляторов не реализовал это ключевое слово. Единственный, о котором я знаю, - это интерфейс, написанный Edison Design Group, который используется компилятором Comeau C ++. Все остальные настаивали на том, что вы пишете шаблоны в заголовочных файлах, нуждающихся в определении кода для надлежащего создания экземпляра (как уже указывали другие).

В результате стандартная комиссия ISO C ++ решила удалить export особенность шаблонов, начинающихся с C ++ 11.

0
задан Santhosh Yedidi 3 March 2019 в 17:20
поделиться

1 ответ

Простой способ извлечь выгоду из кэша слоя изображения - создать базовое изображение только с первым слоем.

Затем используйте FROM <base image> в других ваших Dockerfiles.

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

База файлов Docker:

FROM scratch
ADD ./system.tar.gz /
docker build -f Dockerfile-base -t base .

Dockerfile-1:

FROM base
COPY ./somefiles /
docker build -f Dockerfile-1 -t image1 .

Dockerfile-2:

FROM base
COPY ./otherfiles /
docker build -f Dockerfile-2 -t image2 .

Рекомендуемые чтения

Рекомендации по написанию Dockerfiles. § Использование кэша сборки [117 ]

0
ответ дан Thomasleveil 3 March 2019 в 17:20
поделиться
Другие вопросы по тегам:

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