Как удалить тег изображения в Docker, не удаляя само изображение?


135

Допустим, я хочу пометить изображение Docker и сделать опечатку. Как удалить метку, не удаляя само изображение? Ни в man-страницах, ни в документации Docker не упоминается удаление тегов.

docker tag 0e5574283393 my-imaj
docker tag 0e5574283393 my-image
# docker untag my-imaj # There is no "docker untag"!

4
Для тех, кто хочет <none>разметить изображения без тегов, например foo/bar:<none>: использовать docker images --digestsи docker rmi foo/bar@<digest>как описано на success.docker.com/KBase/…
Джанака Бандара

Ответы:


195

Если ваше изображение помечено более чем одним тегом, то docker rmiудалит тег, но не изображение.

Итак, в вашем примере ...

# docker rmi my-imaj

... удалит этот тег и оставит изображение с другим правильным тегом.


4
Благодарю. Я хотел бы, чтобы они упомянули это в документации: - /
Михай

2
Если тег, который я удаляю, является последним, изображение будет удалено. Вот и мне интересно, каков ответ на вопрос в теме? Как удалить тег и сохранить изображение в кэше?
kub1x

4
И ответ, как всегда, использовать--help , не ленитесь читать. docker image remove --no-prune.. если кто-то заинтересован
kub1x

4
Это ложно, это просто удалило мое изображение. К счастью, зная докер, я уже был подозрительным и создал резервную копию ранее с docker save.
user259412

2
@peterh в ответе ясно сказано If your image is tagged with more than one tag..., что его следует обновить, используя команду из комментариев, которая объясняет, как удалить последний тег, не удаляя изображение.
BrainSlugs83

18

Начиная с пустого репозитория Docker, импортируйте изображение, набрав:

#docker run hello-world

Запустите docker imagesкоманду для просмотра списка изображений. Результат должен выглядеть так:

REPOSITORY        TAG           IMAGE ID          CREATED           SIZE
hello-world       latest        7bc42cc48a84      4 weeks ago       316MB

Теперь давайте создадим тег изображения с именем v1 , выполнив docker tagкоманду:

#docker tag hello-world:latest hello-world:v1

Если мы запустим docker imagesкоманду, мы увидим наш новый тег следующим образом:

REPOSITORY        TAG           IMAGE ID          CREATED           SIZE
hello-world       latest        7bc42cc48a84      4 weeks ago       316MB
hello-world         v1          7bc42cc48a84      4 weeks ago       316MB

Чтобы удалить определенный тег (чтобы ответить на исходный вопрос), запустите docker rmi, hello-world:v1где v1 - имя тега. Вывод будет выглядеть так:

#docker rmi hello-world:v1
Untagged: hello-world:v1

Запустите docker imagesкоманду для просмотра списка изображений. Обратите внимание, что тег изображения был удален:

REPOSITORY        TAG           IMAGE ID          CREATED           SIZE
hello-world       latest        7bc42cc48a84      4 weeks ago       316MB

Наименее двусмысленный подход, хотя и спустя 3 года. +1
bvj


0

Пометьте другое изображение своим именем тега, после чего ваш тег из текущего изображения будет удален.


Добро пожаловать в ServerFault! Пожалуйста, уточните или добавьте некоторые шаги примера команды. Проверьте руководство здесь: serverfault.com/help/how-to-answer
Кори Кнутсон

Бесполезный ответ, если тег был опечаткой, как указано, вы бы не хотели его использовать на другом изображении.
Кен Уильямс
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.