Проверьте, существует ли образ Docker в облачном репозитории.

Скажем, у меня есть этот тег изображения "узел: 9.2", как в FROM node:9.2...

есть ли API, который я могу нажать, чтобы увидеть, существует ли изображение с тегом «узел: 9.2» и может ли оно быть получено, прежде чем я на самом деле попробую docker build ...?


person Alexander Mills    schedule 19.06.2018    source источник


Ответы (3)


Да.

docker image pull node:9.2
person emory    schedule 20.06.2018
comment
хм, я не хочу на самом деле загружать изображение, просто проверьте, существует ли оно, это делает это? - person Alexander Mills; 20.06.2018
comment
@AlexanderMills, если изображение доступно, оно будет загружено. - person emory; 20.06.2018
comment
да, в этом случае я просто пытаюсь пропинговать сервер/реестр концентратора Docker, чтобы узнать, существует ли изображение - это так, я могу дать пользователю хорошее предупреждение, если изображение не существует, заранее, вместо того, чтобы заставлять их тоже ждать длинная - person Alexander Mills; 20.06.2018
comment
Что делать, если изображение существует, но оно закрыто и у пользователя нет доступа? Я подозреваю, что из API pov это то же самое, как если бы изображение не существовало. - person emory; 20.06.2018
comment
Есть ли такая команда, которая не требует авторизации? Чтобы заставить это работать, мне сначала пришлось запустить docker login -u <username> -p <password>... - person Alexander Mills; 23.06.2018
comment
@AlexanderMills Я серьезно в этом сомневаюсь. - person emory; 26.06.2018
comment
хм, да, противоположным доказательством будет то, что я могу устанавливать образы Docker без аутентификации. Например, я могу сделать docker build с изображением, которого у меня еще нет на моей локальной машине, и при этом мне не нужно авторизоваться. Значит, должна быть какая-то команда pull, не требующая аутентификации? - person Alexander Mills; 26.06.2018
comment
Если private/img — это изображение, которого у вас нет локально, и docker image pull priv/img не работает из-за отсутствия аутентификации, но вы можете создать Dockerfile, например FROM priv/img ..., тогда я не уверен, в чем смысл аутентификации. - person emory; 26.06.2018

Этот скрипт будет создан только в том случае, если изображение не существует.

обновление для V2

function docker_tag_exists() {
    curl --silent -f -lSL https://hub.docker.com/v2/repositories/$1/tags/$2 > /dev/null 
}

Используйте вышеуказанную функцию для v2

#!/bin/bash
function docker_tag_exists() {
    curl --silent -f -lSL https://index.docker.io/v1/repositories/$1/tags/$2 > /dev/null 

}

if docker_tag_exists library/node 9.11.2-jessie; then
    echo "Docker image exist,...."
    echo "pulling existing docker..."
    #so docker image exist pull the docker image
    docker pull node:9.11.2-jessie
else 
    echo "Docker image not exist remotly...."
    echo "Building docker image..."
    #build docker image here with absoult or retlative path
    docker build -t nodejs .

fi

С небольшими изменениями по ссылке ниже. Если реестр является частным, проверьте эту ссылку С именем пользователя и паролем < /а>

person Adiii    schedule 20.06.2018
comment
Благодарность! у вас есть пример использования v2 реестра Docker? - person Alexander Mills; 20.06.2018
comment
круто, спасибо, сработало curl --silent -f -lSL https://hub.docker.com/v2/repositories/library/node/tags - person Alexander Mills; 20.06.2018
comment
Итак, я предполагаю, что https://hub.docker.com/v2 не требует аутентификации, но https://registry-1.docker.com/v2 требует аутентификации? - person Alexander Mills; 20.06.2018
comment
аутентификация требуется только в том случае, если вы извлекаете из частного репо, а не в этом случае. - person Adiii; 21.06.2018
comment
Даст ли это ложный отрицательный результат, если во время проверки произойдет сбой сети? - person mpartel; 11.12.2018

Если у вас есть "experimental": enabled для демона Docker, вы можете использовать эту команду:

манифест докера проверяет узел: 9.2

person peetasan    schedule 14.04.2020