Как заставить docker генерировать только дифференциальный слой для существующего изменения файла в базовом образе? - PullRequest
0 голосов
/ 27 июня 2018

Я пытаюсь сгенерировать образ докера, используя Dockerfiles, последовательность выглядит следующим образом

1) Создайте изображение, используя dokerfile, которое скопирует файл abc.txt (размер 200 КБ) в изображение

2) Создайте другое изображение, используя другой файл Docker, который будет использовать ранее созданное изображение (на шаге (1)) в качестве базового изображения, и скопируйте файл abc.txt (добавленные данные и размер = 400 КБ)

Когда я проверяю слои второго изображения, он показывает слои основного изображения со вторым слоем размером 200 КБ из-за файла 200 КБ (abc.txt) и верхним слоем с 400 КБ из-за файла 400 КБ (abc.txt)

То, что я ожидаю, находится на верхнем слое, только изменение файла размером 200 КБ abc.txt должно появиться на втором изображении, но это не тот случай, когда я делаю это.

Есть ли другой способ, которым я могу достичь этого? Любые предложения будут полезны.

Это мое содержимое докер-файла : -

(1) для 1-го изображения и когда размер abc.txt равен 200 КБ:

Из Ubuntu

COPY abc.txt /home/root/abc.txt


После этого я строю образ, используя

сборка докера -t ubuntu2.

(2) Для 2-го изображения и когда я добавил abc.txt, что привело к размеру 400 КБ:

Из Ubuntu2

COPY abc.txt /home/root/abc.txt


Я изменил abc.txt и переписал существующий Dockerfile с указанным выше содержимым и построил изображение, используя

сборка докера -t ubuntu3.

1 Ответ

0 голосов
/ 27 июня 2018

В вашем случае вы заменяете файл abc.txt другим файлом с тем же именем, поэтому изменения, которые вы делаете, удаляют и добавляют файл. По моему мнению, чтобы иметь разницу, вы должны использовать команду RUN вместо COPY, например:

RUN echo "data to add" >> /home/root/abc.txt
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...