2016-06-01 4 views
2

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

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

ответ

4

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

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

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

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

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

Обратитесь к этому ответу для получения дополнительной информации о том, как применить несколько меток: How to create named and latest tag in Docker?

0

Я думаю, что я получил ответ на мой вопрос:

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

2

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

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

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

+1

С огромным различием, что толкает на мерзавец репо без указание тега автоматически становится главной головкой; – tworabbits

+1

Но в отличие от git, где, если вы снова «потянете» за хозяина, вы получите изменения с тех пор, как вы последний раз потянули, если вы вытащите «последнюю» из Docker, и у вас уже есть «последняя», тогда ничего не меняется. – john

Смежные вопросы