Как удалить тег изображения в 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.