Skip to content

Instantly share code, notes, and snippets.

@johananl
Created October 26, 2020 17:47
Show Gist options
  • Save johananl/15394d591dc0f3e194fb7b9d644fc220 to your computer and use it in GitHub Desktop.
Save johananl/15394d591dc0f3e194fb7b9d644fc220 to your computer and use it in GitHub Desktop.
List all images in a Docker Hub repository

List all images in a Docker Hub repository

Requirements

Usage

export DOCKER_USER=bob
export DOCKER_PASS=stuff
export DOCKER_ORG=evilcorp
export DOCKER_REPO=evilapp

python list-images.py
import requests
import os
import json
docker_user = os.environ['DOCKER_USER']
docker_pass = os.environ['DOCKER_PASS']
docker_org = os.environ['DOCKER_ORG']
docker_repo = os.environ['DOCKER_REPO']
page_size = 100
r = requests.post(
'https://hub.docker.com/v2/users/login/',
headers={'Content-Type': 'application/json'},
json={
'username': docker_user,
'password': docker_pass,
},
)
token = json.loads(r.text)['token']
headers = {
'Content-Type': 'application/json',
'Authorization': f'JWT {token}',
}
r = requests.get(
f'https://hub.docker.com/v2/repositories/{docker_org}/{docker_repo}/tags?page_size={page_size}',
headers=headers,
)
tags = []
while True:
j = json.loads(r.text)
batch = j['results']
next_page = j['next']
tags += batch
if next_page is None:
break
r = requests.get(next_page, headers=headers)
for t in tags:
print(t['name'])
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment