I want to know what images are uploaded to a specific owner in GitHub Container Registry. Containers are referred like this: https://ghcr.io/OWNER/<imageName>:<imageTag>
How to list all images from an account in GitHub Container Registry?
7.5k Views Asked by dsimog01 At
4
There are 4 best solutions below
0

You can also do this with GitHub CLI.
Create a classic token with at least the repo
, read:packages
, read:org
permissions. I am not sure why, but the last one was needed for me.
The following generates the same as the previous Octokit answer.
#!/bin/sh
echo "{TOKEN}" | gh auth login --with-token
user=django
containers=$(gh api /users/$user/packages?package_type=container | jq -r .[].name)
for container in $containers; do
versions=$(gh api /users/$user/packages/container/$container/versions)
echo $versions | jq "[
{
container: \"$container\",
name: .[].name,
tags: .[].metadata.container.tags,
}
]"
done
Output:
[
{
"container": "code.djangoproject.com",
"name": "sha256:5ad13961f099c43732cd04638b7504df5c82a993b3c3e29c1e4a0346c04e5e59",
"tags": [
"sha-9ce5a20",
"latest",
"main"
]
},
{
"container": "code.djangoproject.com",
"name": "sha256:5ad13961f099c43732cd04638b7504df5c82a993b3c3e29c1e4a0346c04e5e59",
"tags": [
"sha-125e6f9"
]
},
{
"container": "code.djangoproject.com",
"name": "sha256:5ad13961f099c43732cd04638b7504df5c82a993b3c3e29c1e4a0346c04e5e59",
"tags": [
"sha-5dc9fba"
]
}
]
3

You can use the GitHub Packages API.
The API requires authentication. You can use a personal token.
With Octokit:
import { Octokit } from "@octokit/rest";
const octokit = new Octokit({ auth: "<YOUR TOKEN> " });
const username = "django";
await octokit.rest.packages
.listPackagesForUser({ package_type: "container", username })
.then(
async ({ data }) =>
await Promise.all(
data.map(
async (container) =>
await octokit.rest.packages
.getAllPackageVersionsForPackageOwnedByUser({
package_type: container.package_type,
username,
package_name: container.name,
})
.then(({ data }) =>
data.map((image) => {
return {
container: container.name,
name: image.name,
tags: image?.metadata?.container?.tags ?? [],
};
})
)
)
)
)
.then((result) => console.log(result.flat()));
Output:
[
{
container: 'code.djangoproject.com',
name: 'sha256:eba6cf86886c5920dba74cbe579e9ab996851e6a9232d1095afa92e9d2901616',
tags: [ 'sha-d679c9a', 'latest', 'main' ]
},
{
container: 'code.djangoproject.com',
name: 'sha256:4b2472bfcc3218f5396830c865592628056864c5a65015e9d32d75234941b934',
tags: [ 'sha-019618e' ]
},
{
container: 'code.djangoproject.com',
name: 'sha256:f9fe5334a871286f0a75710d3c38b00e07aa8dd90cd206644155136ef835f278',
tags: [ 'sha-db2c406' ]
},
{
container: 'code.djangoproject.com',
name: 'sha256:99ad57b1bb7ca2d82f3e1abb61f496c9ae7dc7a0e4721c595b107afe85ab03ea',
tags: [ 'sha-19a7a14' ]
},
{
container: 'code.djangoproject.com',
name: 'sha256:1d284e53531f9a0e963ad843bce395453467bdd0ee0b89b9ab231a72cea6f10a',
tags: [ 'sha-0a02bc3', 'docker' ]
}
]
4

If you published a package to GHCR and want to see it in the browser UI, go to this URL:
https://github.com/username?tab=packages
Just replace 'username' with your GitHub username.
You can list images (packages) also from within GitHub UI.
List of packages can be found when you simply navigate to a specific GitHub project such as https://github.com/fluxcd/flux2 and in the right panel you can see and click
Packages
button.The URL for container GitHub package window is in format
https://github.com/<ORGANIZATION>/<PROJECT>/pkgs/container/<PACKAGE>
. Here is example URL for Flux2 CLI - https://github.com/fluxcd/flux2/pkgs/container/flux-cli.From there it is also possible to list all pushed tags.