Skip to main content

Parse docker image as distribution does.

Project description

docker-image-py

Parse docker image as distribution does.

Usage

Install

You can install from PyPI.

$ pip install docker-image-py

Or install from GitHub for latest version.

$ pip install https://github.com/realityone/docker-image-py/archive/master.zip

Parse Docker Image Names

For most user input, use parse_normalized_named(). This follows Docker CLI rules for familiar names: it fills in docker.io, adds library/ for official images, and keeps custom registries intact.

>>> from docker_image import reference
>>>
>>> ref = reference.Reference.parse_normalized_named('ubuntu')
>>> print(ref)
{'name': 'docker.io/library/ubuntu', 'tag': None, 'digest': None}
>>> print(ref.familiar_name())
ubuntu
>>> ref = reference.Reference.parse_normalized_named('containous/traefik')
>>> print(ref)
{'name': 'docker.io/containous/traefik', 'tag': None, 'digest': None}
>>> hostname, name = ref.split_hostname()
>>> print('hostname: {}, name: {}'.format(hostname, name))
hostname: docker.io, name: containous/traefik
>>> ref = reference.Reference.parse_normalized_named('daocloud.io/nginx:latest')
>>> print(ref)
{'name': 'daocloud.io/nginx', 'tag': 'latest', 'digest': None}

Do not use parse() for every image string. parse() is the raw syntax parser from the distribution reference grammar; it does not infer Docker Hub defaults. Use it when the input is already a literal reference and you want grammar-level parsing only.

>>> from docker_image import reference
>>>
>>> ref = reference.Reference.parse('nginx:latest')
>>> print(ref)
{'name': 'nginx', 'tag': 'latest', 'digest': None}
>>> ref = reference.Reference.parse('daocloud.io/nginx')
>>> print(ref)
{'name': 'daocloud.io/nginx', 'tag': None, 'digest': None}
>>> hostname, name = ref.split_hostname()
>>> print('hostname: {}, name: {}'.format(hostname, name))
hostname: daocloud.io, name: nginx
>>> ref = reference.Reference.parse(
...     'daocloud.io/nginx:1.11-alpine@sha256:14bf491df1d58404433b577e093c906460871ee677d18caa276d9c03727e0b33'
... )
>>> print(ref)
{'name': 'daocloud.io/nginx', 'tag': '1.11-alpine', 'digest': 'sha256:14bf491df1d58404433b577e093c906460871ee677d18caa276d9c03727e0b33'}

One common mistake is expecting raw parse() to apply Docker Hub namespace rules. It does not:

>>> from docker_image import reference
>>>
>>> raw = reference.Reference.parse('containous/traefik')
>>> raw.split_hostname()
('containous', 'traefik')
>>> normalized = reference.Reference.parse_normalized_named('containous/traefik')
>>> hostname, name = normalized.split_hostname()
>>> print('hostname: {}, name: {}'.format(hostname, name))
hostname: docker.io, name: containous/traefik

Reference

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

docker_image_py-0.2.0.tar.gz (16.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

docker_image_py-0.2.0-py3-none-any.whl (11.2 kB view details)

Uploaded Python 3

File details

Details for the file docker_image_py-0.2.0.tar.gz.

File metadata

  • Download URL: docker_image_py-0.2.0.tar.gz
  • Upload date:
  • Size: 16.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for docker_image_py-0.2.0.tar.gz
Algorithm Hash digest
SHA256 451ad5b3b656d00797e2b84e7ee2629a01012c52a83439cbcfbdeadc3ead3ae1
MD5 028aede6c16bd93930b27b6c737298c5
BLAKE2b-256 d4c9b595f95322857b97ff471806ff14a64ea0e41bcd81a88fbbfe09a0190d28

See more details on using hashes here.

File details

Details for the file docker_image_py-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for docker_image_py-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 de6fa26bb4f90a1ad54be1dabc3cb0447007c37e396a5f2bfce5a4aadf15f0c9
MD5 510295cc989385e342c9da7ba5330c31
BLAKE2b-256 b6caf1640909d860379c5ef0e7c2f94c81e654de3ce77add4a88be61674fe20c

See more details on using hashes here.

Supported by

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