- Python 3
- requests
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']) |