Як видалити тег зображення в Докер, не видаляючи саме його?


134

Скажімо, я хочу позначити зображення Docker і зробити друк. Як видалити тег без видалення самого зображення? Ні в Manpages, ні в документації 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/…
Janaka Bandara

Відповіді:


194

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

Отже, у вашому прикладі ...

# docker rmi my-imaj

... видалить цей тег і залишить подане зображення разом з іншим правильним тегом.


4
Дякую. Я б хотів, щоб вони згадували про це в документації: - /
Mihai

2
Якщо тег, який я видаляю, останній, зображення буде видалено. Тож мені цікаво, яка відповідь на питання в темі? Як видалити тег і зберегти кеш зображення?
kub1x

4
І відповідь, як завжди, використовуйте--help , не лінуйтеся читати. docker image remove --no-prune.. на випадок, коли хтось зацікавиться.
kub1x

4
Це помилково, це просто видалило моє зображення. На щастя, знаючи докер я вже підозріло, і створив резервну копію раніше з docker save.
користувач259412

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


17

Починаючи з порожнього док-репо репорта, імпортуйте зображення, ввівши:

#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

Щоб видалити конкретний тег (відповісти на вихідне запитання), запустіть докер 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
Cory

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