Package for accessing a Docker v2 registry
Project description
Python module and command-line tool for storing and retrieving data in a Docker registry.
Store arbitrary data (blob-store)
Content addressable
Set up named aliases to blobs
Supports Docker registry version 2
Works on Python 2.7 and 3.4
Command-line example:
dxf push-blob fred/datalogger logger.dat @may15-readings
dxf pull-blob fred/datalogger @may15-readings
which is the same as:
dxf set-alias fred/datalogger may15-readings $(dxf push-blob fred/datalogger logger.dat)
dxf pull-blob fred/datalogger $(dxf get-alias fred/datalogger may15-readings)
Module example:
from dxf import DXF
def auth(dxf, response):
dxf.auth_by_password('fred', 'somepassword', response=response)
dxf = DXF('registry-1.docker.io', 'fred/datalogger', auth)
dgst = dxf.push_blob('logger.dat')
dxf.set_alias('may15-readings', dgst)
assert dxf.get_alias('may15-readings') == [dgst]
for chunk in dxf.pull_blob(dgst):
std:stdout.write(chunk)
Usage
The module API is described here.
The dxf command-line tool uses the following environment variables:
DXF_HOST - Host where Docker registry is running
DXF_INSECURE - Set this to 1 if you want to connect to the registry using http rather than https (which is the default).
DXF_USERNAME - Name of user to authenticate as
DXF_PASSWORD - User’s password
You can use the following options with dxf. Supply the name of the repository you wish to work with in each case as the second argument.
dxf push-blob <repo> <file> [@alias]
Upload a file to the registry and optionally give it a name (alias). The blob’s hash is printed to standard output.
The hash or the alias can be used to fetch the blob later using pull-blob.
dxf pull-blob <repo> <hash>|<@alias>...
Download blobs from the registry. For each blob you can specify its hash (remember the registry is content-addressable) or an alias you’ve given it (using push-blob or set-alias).
dxf del-blob <repo> <hash>|<@alias>...
Delete blobs from the registry. If you specify an alias the blobs it points to will be deleted, not the alias itself. Use del-alias for that.
Note that the Docker registry doesn’t support deletes yet so expect an error.
dxf set-alias <repo> <alias> <hash>|<file>...
Give a name (alias) to a set of blobs. For each blob you can either specify its hash (as printed by get-blob) or, if you have the blob’s contents on disk, its filename (including a path separator to distinguish it from a hash).
dxf get-alias <repo> <alias>...
For each alias you specify, print the hashes of all the blobs it points to.
dxf del-alias <repo> <alias>...
Delete each specified alias. The blobs they point to won’t be deleted (use del-blob for that), but their hashes will be printed.
Note that the Docker registry doesn’t support deletes yet so expect an error.
dxf list-aliases <repo>
Print all the aliases defined in the repository.
dxf list-repos
Print the names of all the repositories in the registry. Not all versions of the registry support this.
Authentication tokens
dxf automatically obtains Docker registry authentication tokens using your DXF_USERNAME and DXF_PASSWORD environment variables as necessary.
However, if you wish to override this then you can use the following command:
dxf auth <repo> <action>...
Authenticate to the registry using DXF_USERNAME and DXF_PASSWORD, and print the resulting token.
action can be pull, push or *.
If you assign the token to the DXF_TOKEN environment variable, for example:
DXF_TOKEN=$(dxf auth fred/datalogger pull)
then subsequent dxf commands will use the token without needing DXF_USERNAME and DXF_PASSWORD to be set.
Note however that the token expires after a few minutes, after which dxf will exit with EACCES.
Installation
pip install python_dxf
Licence
Tests
make test
Lint
make lint
Code Coverage
make coverage
coverage.py results are available here.
Coveralls page is here.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for python_dxf-1.0.1-py2-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 75d966e8dbca938198f5b72a3901b266fa407d78eaac397f356ffa0f2b91833b |
|
MD5 | 14e93a6184897c7ad3dfe64924eaf673 |
|
BLAKE2b-256 | a551516082bca088a64ce99f96f0c1fe13a96ffb4e48a4d9559f21041a9f4c54 |