Skip to main content

Python library for interacting with container image registries

Project description

pyregistry

pyregistry is a Python library and CLI tool for inspecting and copying container image data from and between registries.

This library primarily focuses on being a useful tool for dealing with container image registries. It has very limited support for interpretation of the objects stored within.

Library usage

Find sub-manifest based on platform.

async with AsyncRegistryClient() as client:
    manifest_ref = parse_image_name("alpine")
    manifest = await client.manifest_download(manifest_ref)

    if isinstance(manifest, ManifestListV2S2):
        for sub_manifest in manifest.manifests:
            if sub_manifest.platform.architecture == "amd64":
                manifest_ref.ref = sub_manifest.digest
                manifest = await client.manifest_download(manifest_ref)
                break
        else:
            raise Exception("Found no matching platform")
    else:
        print("Not a manifest list")

Download layers of an image

for layer in manifest.layers:
    assert layer.media_type == "application/vnd.docker.image.rootfs.diff.tar.gzip"
    blob_ref = RegistryBlobRef(manifest_ref.registry, manifest_ref.repo, layer.digest)

    # For example we just download into memory. In practice don't do this.
    blob_data = io.BytesIO(
        b"".join([chunk async for chunk in client.ref_content_stream(blob_ref)])
    )
    with tarfile.open(mode="r|*", fileobj=blob_data) as tar:
        for tarinfo in tar.getmembers():
            print(tarinfo.name)

CLI copy tool

# By default it will pull credentials based on ~/.docker/config.json 
python -m aioregistry ubuntu:18.04 my.private.registry/my-repo:my-tag
# Copy all tags matching regex
python -m aioregistry ubuntu my.private.registry/my-repo --tag-pattern '18\..*'

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

aioregistry-0.5.1.tar.gz (15.4 kB view details)

Uploaded Source

Built Distribution

aioregistry-0.5.1-py3-none-any.whl (17.3 kB view details)

Uploaded Python 3

File details

Details for the file aioregistry-0.5.1.tar.gz.

File metadata

  • Download URL: aioregistry-0.5.1.tar.gz
  • Upload date:
  • Size: 15.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.6.4 pkginfo/1.7.1 requests/2.22.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.8.10

File hashes

Hashes for aioregistry-0.5.1.tar.gz
Algorithm Hash digest
SHA256 f742d5a9a4dca7b3c6645ae7a0e6766c1352a4299b5e7872c2d4f0891fb34461
MD5 ab2d894078d3b4bd0bdeed12404808b4
BLAKE2b-256 6c4647bfdac109f928c9b70f8d047f80c6044c2dd4d7612ebbefab0b026ec769

See more details on using hashes here.

File details

Details for the file aioregistry-0.5.1-py3-none-any.whl.

File metadata

  • Download URL: aioregistry-0.5.1-py3-none-any.whl
  • Upload date:
  • Size: 17.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.6.4 pkginfo/1.7.1 requests/2.22.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.8.10

File hashes

Hashes for aioregistry-0.5.1-py3-none-any.whl
Algorithm Hash digest
SHA256 f3e0867788d2836ab9bf36ce4bc233b062eb2fa66157ed45df9c814b524e596a
MD5 9044d316fd3efde62342879c9cec3f78
BLAKE2b-256 b4a3a4845702e1450e0dcd9cbdcfda2f9faaa426344236b4a2402055a7cc10ff

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page