Chciałbym pobrać obrazy centów, kocurów, ... używając ich kodu sha256, na przykład w
docker pull myimage@sha256:0ecb2ad60
ale nie mogę znaleźć kodu sha256 do użycia w dowolnym miejscu.
Sprawdziłem repozytorium dockerhub pod kątem jakichkolwiek śladów kodu sha256, ale nie mogłem znaleźć żadnych. Pobrałem obrazy według ich tagu
docker pull tomcat:7-jre8
i sprawdziłem obraz za pomocą, docker inspect
aby zobaczyć, czy w metadanych jest kod sha256, ale go nie ma (dodanie kodu sha256 obrazu prawdopodobnie zmieniłoby kod sha256).
Czy muszę sam obliczyć kod sha256 obrazu i go używać?
docker
docker-registry
chrześcijanin
źródło
źródło
Odpowiedzi:
Najnowsza odpowiedź
Edycja sugerowana przez OhJeez w komentarzach.
Oryginalna odpowiedź
Wierzę, że możesz to również uzyskać za pomocą
Działa tylko w Docker 1.9 i jeśli obraz został pierwotnie pobrany przez skrót. Szczegóły znajdują się w narzędziu do śledzenia problemów Dockera.
źródło
docker inspect --format='{{index .RepoDigests 0}}' $IMAGE
bez nawiasów klamrowych (zwraca pierwszy indeks tablicy)Możesz to zdobyć
docker images --digests
źródło
docker images --format '{{.Digest}}'
. Jest to przydatne wforeach
oświadczeniu, aby wykonać trochę pracy z podsumowaniami.Właśnie to widziałem:
Kiedy wyciągam obraz, kod sha256 jest wyświetlany na dole wyjścia (Digest: sha ....):
Ten kod sha
może być użyty do późniejszego wyciągnięcia obrazu za pomocą
Dzięki temu masz pewność, że obraz nie zostanie zmieniony i można go bezpiecznie wykorzystać do produkcji.
źródło
Najprostszy i najbardziej zwięzły sposób to:
docker images --no-trunc --quiet $IMAGE
Zwraca tylko
sha256:...
ciąg i nic więcej.na przykład:
Edytować:
UWAGA: działa to tylko w przypadku obrazów lokalnych. W
docker pull $IMAGE
razie potrzeby możesz najpierw.źródło
Oprócz istniejących odpowiedzi możesz skorzystać z
--digests
opcji podczas wykonywania,docker images
aby uzyskać listę podsumowań wszystkich posiadanych obrazów.Możesz dodać grep, aby przejść dalej
źródło
Powinno to być pole Id, które można było zobaczyć w starym, przestarzałym interfejsie API Docker Hub
ALE: tak nie działa teraz z nową dystrybucją Dockera .
Zobacz problem 628: „Pobierz identyfikator obrazu z nazwą tagu”
Obecna (połowa 2015 r.) Odpowiedź brzmi:
źródło
Powyższe metody nie działają w niektórych przypadkach. Oni albo:
Poniższa metoda jest delikatna, ale działa w celu wyodrębnienia określonej pełnej „nazwy” i skrótu dla konkretnego wypychanego pojemnika.
Oto scenariusz - obraz jest przesyłany oddzielnie do 2 różnych projektów w tym samym repozytorium, więc zapytanie RepoDigests zwraca 2 wyniki.
Chcę użyć wyniku alfa, ale nie mogę przewidzieć, który to będzie indeks. Dlatego muszę manipulować wyjściem tekstowym, aby usunąć nawiasy i umieścić każdy wpis w osobnym wierszu. Stamtąd mogę łatwo uzyskać wynik.
źródło
Jak wspomniał @zelphir, używanie skrótów nie jest dobrym sposobem, ponieważ nie istnieje dla obrazu tylko lokalnego. Zakładam, że identyfikator obrazu sha jest najbardziej dokładny i spójny w przypadku tagów / ciągnięcia / wypychania itp.
Zrób sztuczkę.
źródło
Możesz go znaleźć w momencie pobierania obrazu z odpowiedniego repozytorium. Polecenie poniżej wspomina Digest: sha256 w momencie ściągania obrazu dockera.
09:33 ## ~ ::> docker --version Docker wersja 19.03.4, kompilacja 9013bf5
Digest: sha256: 6e9f67fa63b0323e9a1e587fd71c561ba48a034504fb804fd26fd8800039835d
Po pobraniu obrazu możemy wykonać następujące czynności
„ubuntu @ sha256: 6e9f67fa63b0323e9a1e587fd71c561ba48a034504fb804fd26fd8800039835d”
źródło
Po prostu wystaw
docker pull tomcat:7-jre8
ponownie, a otrzymasz to, czego chcesz.źródło