1. ホーム
  2. bash

[解決済み] image:tag の組み合わせが既に docker hub に存在するかどうかを確認する。

2023-07-01 02:38:14

質問

bashスクリプトの一部として、特にdocker image:tagの組み合わせがdocker hubに存在するかどうかをチェックしたいのです。また、それはプライベートリポジトリになります。

すなわち、疑似コードは次のようになります。

tag = something
if image:tag already exists on docker hub:
    Do nothing
else
    Build and push docker image with that tag

どのように解決するのですか?

こちらをお試しください。

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

if docker_tag_exists library/nginx 1.7.5; then
    echo exist
else 
    echo not exists
fi


更新しました。

Docker Registry v2 を使用する場合 (ベースは この ):

# set username and password
UNAME="user"
UPASS="password"

function docker_tag_exists() {
    TOKEN=$(curl -s -H "Content-Type: application/json" -X POST -d '{"username": "'${UNAME}'", "password": "'${UPASS}'"}' https://hub.docker.com/v2/users/login/ | jq -r .token)
    curl --silent -f --head -lL https://hub.docker.com/v2/repositories/$1/tags/$2/ > /dev/null
}

if docker_tag_exists library/nginx 1.7.5; then
    echo exist
else 
    echo not exists
fi