При создании образа докера вы обычно используете docker build .
.
Но я обнаружил, что вы можете указать --pull
, так что вся команда будет выглядетьdocker build --pull .
Я не уверен насчет цели --pull
. Официальная документация докеров гласит: «Всегда пытайтесь использовать более новую версию образа», и я не уверен, что это означает в этом контексте.
Вы используете docker build
для создания нового образа и в конечном итоге опубликовать его где-нибудь в реестре контейнера. Почему вы хотите вытащить то, что еще не существует?
Я бы ожидал, что что-то столь же «простое», как это, будет легко найти в Интернете, но ни у кого, похоже, нет такого вопроса, как этот. Единственный реальный успех в Google относится к официальным документам Dockers, которые я (как указано выше) не понимаю.
Спасибо за вашу помощь!
ubuntu:bionic
изображением, так как к нему (очевидно) не прикреплена версия, но он все равно будет другим, когда они публикуют новое изображение. Все имеет смысл. Спасибо!ubuntu:0.1.0
например, и они опубликовали новое изображение, но с той же версией, т. Е.ubuntu:0.1.0
- означает ли это, чтоdocker build --pull
снова будет загружено все новое изображение снова? (это было бы то, что большинство людей предпочитают, я думаю)Простой ответ
docker build
используется для сборки из локального докер-файла.docker pull
используется, чтобы вытащить из док-концентратора. Если вы используете сборку Docker без файла Docker, он выдаст ошибку.Когда вы указываете
--pull
или:latest
Docker будет пытаться загрузить самую новую версию (если таковые имеются)По сути, если вы добавите --pull, он будет пытаться получить самую новую версию при каждом запуске.
источник
Docker позволяет пропускание
--pull
флагаdocker build
, напримерdocker build . --pull -t myimage
. Это рекомендуемый способ гарантировать, что сборка всегда использует самый последний образ контейнера, несмотря на локальную версию. Однако стоит упомянуть еще об одном:Чтобы убедиться, что ваша сборка полностью перестроена, включая проверку базового образа на наличие обновлений, используйте при сборке следующие параметры:
--no-cache
- Это приведет к восстановлению уже доступных слоев.Поэтому полная команда будет выглядеть так:
docker build . --pull --no-cache --tag myimage:version
Те же параметры доступны для
docker-compose
:docker-compose build --no-cache --pull
источник
--no-cache
. Если базовый образ обновляется (и--pull
получает новую версию), это автоматически делает кэш недействительным; Точно так же, если у васCOPY
другой код, который сделает кеш недействительным. Единственное, на что это обычно влияет, - это если вы делаете что-то вродеapt-get install
сетевого пакета, и в этом случае--no-cache
он будет проверять наличие более новой версии, даже если базовый образ не обновился.