Предположим, у меня есть изображение, которое я хочу пометить 0.10.24
(в моем случае это изображение, содержащее Node.js 0.10.24). Я построил это изображение, используя Dockerfile, выполняя docker build
и предоставляя тег с помощью -t
параметра.
Я ожидаю, что однажды у меня появятся дополнительные версии этого образа, поэтому я перезапущу процесс, просто с другим именем тега.
Все идет нормально. Это прекрасно работает и все хорошо.
Но, и именно здесь начинаются проблемы, я также хочу, чтобы всегда было latest
добавлено новейшее изображение с тегами . Поэтому я думаю, что мне нужно дать два имени одному и тому же изображению.
Как мне это сделать? Мне действительно нужно повторно запустить docker build
ту же версию, но на этот раз использовать другой тег, есть ли лучший вариант?
Ответы:
Вы можете иметь несколько тегов при построении изображения:
Ссылка: https://docs.docker.com/engine/reference/commandline/build/#tag-image-t
источник
:latest
часть, так как это по умолчанию:docker build -t whenry/fedora-jboss -t whenry/fedora-jboss:v2.1 .
Как только у вас есть ваше изображение, вы можете использовать
Создайте и пометьте изображение с помощью creack / node: последнее
Добавить новый тег
Вы можете использовать это и пропустить часть -t из сборки
источник
creack/node:latest
, вы можете пометить егоdocker tag creack/node:latest creack/node:0.10.24
REV=$(hg identify --num)
docker tag -f $ID creack/node:latest
для того, чтобы принудительно пометить тег последним (в случае, если предыдущее изображение уже было последним)Вот мой скрипт bash
Затем вы можете удалить непомеченные изображения, если вы перестроили ту же версию с
ссылка на сайт
или
или
Очистить команды :
В Docker 1.13 введены команды очистки. Чтобы удалить все неиспользуемые контейнеры, изображения, сети и тома:
или индивидуально:
источник
awk '{print $3}'
работает, но неawk "{print $3}"
так, как я использую командуdocker rmi $(docker images -a | grep "^<none>" | awk '{print $3}')
-f
вариант больше не существуетdocker tag
. Использование только чтоdocker tag IMAGE[:TAG] IMAGE[:TAG]
docker push
послеdocker build & docker run
, вы нажимаете:latest
или${VERSION}
?ID=$(docker build -t creack/node .)
не работает для меня, так какID
будет содержать выходные данные из сборки.Поэтому я использую этот небольшой скрипт BASH:
источник
-q
/--quiet
с ,build
как указано в этом ответеПросто наберите идентификатор из
docker images
:Не нуждается во временном файле и дает полный вывод сборки . Вы все еще можете перенаправить его
/dev/null
или файл журнала.источник
Вариация ответа Аарона. Использование sed без временных файлов
источник