Вытягивание последнего образа из dockerhub

Предположим, что на dockerhub есть пользовательский репозиторий с тремя изображениями. Изображения помечены как A, B и C. Здесь C мой последний тег.

Теперь я не знаю этих тегов. Когда я делаю docker pull user/image, это дает мне сообщение об ошибке, говорящее, что Tag latest not found in repository docker.io/user/image. Как я могу вытащить изображение с последним тегом (в данном случае C).


person Saurabh Shah    schedule 01.06.2016    source источник


Ответы (3)


Да, я абсолютно согласен: последний тег сбивает с толку. Последний тег на самом деле не обязательно указывает на последнюю версию вашего изображения. Давайте посмотрим:

1) Когда вы извлекаете образ без указания имени тега, Docker попытается извлечь образ с тегом «последний».

2) Если вы не пометите образ перед операцией отправки в реестр, Docker автоматически присвоит ему «последний» тег.

3) Когда вы помечаете свое изображение, и это звучит так, как будто вы делаете это, Docker никогда не пометит что-либо «последним»; Затем вам нужно применить «последний» тег вручную.

С моей точки зрения, тег «последний» вместо этого должен быть тегом «по умолчанию» и пониматься как изображение по умолчанию, которое извлекается из реестра, когда в команде извлечения не было указано имя тега.

Обратитесь к этому ответу для получения дополнительной информации о том, как применять несколько тегов: Как создать именованный и последний тег в Docker?

person tworabbits    schedule 01.06.2016
comment
Но когда я пытаюсь вытащить образ без указания тега, я получаю последний тег, не найденный в репозитории docker.io/landpack/hello. Зачем ? - person Frank AK; 11.04.2018
comment
На самом деле это не отвечает на вопрос Как вытащить последнее изображение? - person SerG; 11.10.2019
comment
@SerG - потому что невозможно получить последнее изображение. Это не работает автоматически. Вместо этого вам нужно сделать что-то особенное при нажатии изображения. Если вы перейдете по ссылке в ответе, вы увидите вопросы и ответы с подробностями. - person ToolmakerSteve; 03.11.2019

Кажется, я получил ответ на свой вопрос:

curl -s -S "https://registry.hub.docker.com/v2/repositories/repo/image/tags/" | jq '."results"[]["name"]' даст мне список всех тегов в репозитории dockerhub. Затем я могу легко передать это с помощью sed -n 1p, чтобы получить последнюю фиксацию.

person Saurabh Shah    schedule 01.06.2016

Один из способов думать о теге «последний» похож на тег «мастер» в git. На самом деле, я хотел бы, чтобы они назвали это так!

Если вы клонируете репозиторий git без указания ветки, вы получите ветку «master», даже если обновления могли быть отправлены в другие ветки совсем недавно.

Если вы вытащите образ Docker, вы получите «последний» тег, хотя другие изображения могли быть помещены в другие теги совсем недавно :-)

person Quentin Stafford-Fraser    schedule 26.09.2016
comment
С той огромной разницей, что отправка в репозиторий git без указания тега автоматически становится HEAD мастера; - person tworabbits; 26.07.2017
comment
Но в отличие от git, где, если вы снова извлечете из master, вы получите изменения с момента последнего извлечения, если вы извлечете последнюю из Docker, и у вас уже есть последняя, ​​тогда ничего не изменится. - person Llama; 19.09.2017