Docker обновляет изображение при изменении dockerfile
Я играю с докером, создавая Dockerfile
с некоторыми инструкциями nodejs. Прямо сейчас, каждый раз, когда я вношу изменения в файл docker, я воссоздаю образ, запустив sudo docker build -t nodejstest .
в моей папке проекта, но это создает новое изображение каждый раз и сглатывает мой ssd довольно скоро.
Есть ли способ обновить существующее изображение при изменении файла dockerfile или я вынужден создавать новый каждый раз, когда я вношу изменения в файл?
Извините, если это немой вопрос
Ответы
Ответ 1
Кэширование поддержки сборки Docker, если нет инструкции ADD
. Если вы активно разрабатываете и изменяете файлы файлов, то только после ADD
будет перестроен.
Начиная с 0.6.2 (запланировано сегодня), вы можете сделать docker build --rm .
, и он удалит временные контейнеры. Он будет сохранять изображения, хотя.
Чтобы удалить сиротские изображения, вы можете проверить их с помощью docker images
и выполнить docker rmi <id>
на одном из них. На данный момент существует автоматическая настройка, и все непомеченные изображения (сироты, предыдущие сборки) будут удалены.
Ответ 2
В соответствии с этим руководством по лучшим практикам, если вы сохраните первые строки вашего файла докеров, он также будет кэшировать их и повторно использовать одни и те же изображения для будущих построек
Ответ 3
Во время разработки нет смысла перестраивать целый контейнер для каждой фиксации. Позже вы можете автоматизировать создание контейнера Docker с последним кодом как частью процесса QA/развертывания.
В принципе, вы можете выбрать минимальный контейнер, который извлекает код (используя git при запуске контейнера или используя -v /home/myuser/mynode:/home/myuser/mynode
с ENTRYPOINT для запуска node).
См. мой ответ на этот вопрос:
Приложение Docker rails и git