Я создаю образ докера, используя Dockerfile. После сборки образа я внес некоторые базовые изменения в Dockerfile. Можно ли восстановить тот же образ только с дополнительными изменениями. Поскольку создание образа занимает очень много времени, я не хочу создавать его полностью. Заранее спасибо.
Восстановите тот же образ докера, но только с дополнительными изменениями в файле Docker.
Ответы (3)
Все сборки докеров работают так, как вы описываете.
Единственное, что нужно учитывать, это зависимости слоев.
Рассмотрите Dockerfile
FROM something
RUN cmd1
RUN cmd2
RUN cmd3
RUN cmd4
Если вы измените cmd1
, то все слои будут перестроены, потому что они могут отличаться по отношению к cmd1
Если вы измените cmd4
, то будет перестроена только эта команда, потому что она не повлияла ни на какие другие слои.
Подумайте, какие команды нужно запускать и в каком порядке — возможно, вы сможете улучшить его, изменив порядок операторов.
Да, если вы пометите свой образ docker myimage, просто запустите другой файл Docker с помощью
FROM myimage
и поместите после этого ваши дополнительные изменения
Вы не можете перестроить его с изменениями, для этого вам нужно будет хранить постоянные данные на томе.
Однако, чтобы сохранить изменения, вы можете использовать commit
:
https://docs.docker.com/engine/reference/commandline/commit/ а>
Создать новый образ из изменений контейнера
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
Может быть полезно зафиксировать изменения или настройки файла контейнера в новом образе. Это позволяет отлаживать контейнер, запуская интерактивную оболочку, или экспортировать рабочий набор данных на другой сервер. Как правило, Dockerfiles лучше использовать для документированного и удобного управления образами. Подробнее о допустимых именах изображений и тегах.
Операция фиксации не будет включать данные, содержащиеся в томах, смонтированных внутри контейнера.
По умолчанию фиксируемый контейнер и его процессы будут приостановлены на время фиксации образа. Это снижает вероятность повреждения данных в процессе создания коммита.