Jak usunąć znacznik obrazu w Dockerze bez usuwania samego obrazu?


134

Powiedzmy, że chcę oznaczyć zdjęcie Dockera i zrobić literówkę. Jak usunąć tag bez usuwania samego obrazu? Ani strony podręcznika, ani dokumentacja Dockera nie wspominają o usuwaniu tagów.

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

4
Dla tych, którzy chcą <none>odznaczać nieoznaczone obrazy, takie jak foo/bar:<none>: użyj docker images --digestsi docker rmi foo/bar@<digest>zgodnie z opisem na success.docker.com/KBase/…
Janaka Bandara

Odpowiedzi:


194

Jeśli twój obraz jest oznaczony więcej niż jednym znacznikiem, docker rmiusunie ten znacznik, ale nie obraz.

W twoim przykładzie ...

# docker rmi my-imaj

... usunie ten tag i pozostawi obraz obecny z innym poprawnym tagiem.


4
Dzięki. Chciałbym, żeby wspomnieli o tym w dokumentacji: - /
Mihai,

2
Jeśli tag, który usuwam, jest ostatni, obraz zostanie usunięty. Zastanawiam się więc, jaka jest odpowiedź na pytanie w temacie? Jak usunąć tag i zachować obraz w pamięci podręcznej?
kub1x

4
Odpowiedź brzmi: zawsze używaj--help , nie bądź leniwy w czytaniu. docker image remove --no-prune.. na wypadek, gdyby ktoś był zainteresowany.
kub1x

4
To nieprawda, po prostu usunąłem mój obraz. Na szczęście, znając dokera, byłem już podejrzany i wcześniej utworzyłem kopię zapasową docker save.
user259412,

2
@peterh odpowiedź jasno stwierdza If your image is tagged with more than one tag..., że należy ją zaktualizować poleceniem z komentarzy, które wyjaśnia, jak usunąć ostatni znacznik bez usuwania obrazu.
BrainSlugs83


17

Zaczynając od pustego repozytorium dokera, zaimportuj obraz, wpisując:

#docker run hello-world

Uruchom docker imagespolecenie, aby wyświetlić listę obrazów. Wynik powinien wyglądać następująco:

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

Teraz utwórzmy tag obrazu o nazwie v1 , uruchamiając docker tagpolecenie:

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

Jeśli uruchomimy docker imagespolecenie, zobaczymy nasz nowy tag w następujący sposób:

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

Aby usunąć określony znacznik (aby odpowiedzieć na oryginalne pytanie), uruchom porter rmi dokera, hello-world:v1gdzie v1 jest nazwą znacznika. Dane wyjściowe będą wyglądać następująco:

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

Uruchom docker imagespolecenie, aby wyświetlić listę obrazów. Zauważ, że tag obrazu został usunięty:

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

Najmniej dwuznaczne podejście, aczkolwiek 3 lata później. +1
bvj

0

Oznacz inny obraz za pomocą nazwy tagu, a następnie tag z bieżącego obrazu zostanie usunięty.


Witamy w ServerFault! Wyjaśnij lub dodaj kilka przykładowych kroków polecenia. Sprawdź przewodnik tutaj: serverfault.com/help/how-to-answer
Cory Knutson

Nie jest to przydatna odpowiedź, jeśli tag był literówką, jak wskazano, nie chciałbyś też na innym obrazie.
Ken Williams
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.