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"!
Mihai
źródło
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.

Richard Corfield
źródło
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
18

Uruchom, docker rmi REPOSITORY:TAGaby usunąć tag.

Wartości REPOSITORYi TAGpochodzą z docker imagesdanych wyjściowych.

Na przykład

$ docker rmi my-image:0e5574283393
Untagged: my-image:0e5574283393
Ashishjain
źródło
blog.tmtk.net/2013/09/16/how_to_remove_tag_on_docker.html . Może to zapewnić dalszą pomoc
ashishjain
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
Travis Rennemann
źródło
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.

Nikolay
źródło
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