A Python library for the Docker Engine API
Go to file
Ian Campbell cd59491b9a scripts/version.py: Use regex grouping to extract the version
The `lstrip` and `rstrip` functions take a set of characters to remove, not a
prefix/suffix. Thus `rstrip('-x86_64')` will remove any trailing characters in
the string `'-x86_64'` in any order (in effect it strips the suffix matching
the regex `[-_x468]*`). So with `18.09.4` it removes the `4` suffix resulting
in trying to `int('')` later on:

    Traceback (most recent call last):
      File "/src/scripts/versions.py", line 80, in <module>
        main()
      File "/src/scripts/versions.py", line 73, in main
        versions, reverse=True, key=operator.attrgetter('order')
      File "/src/scripts/versions.py", line 52, in order
        return (int(self.major), int(self.minor), int(self.patch)) + stage
    ValueError: invalid literal for int() with base 10: ''

Since we no longer need to check for the arch suffix (since it no longer
appears in the URLs we are traversing) we could just drop the `rstrip` and
invent a local prefix stripping helper to replace `lstrip('docker-')`. Instead
lets take advantage of the behaviour of `re.findall` which is that if the regex
contains a single `()` match that will be returned. This lets us match exactly
the sub-section of the regex we require.

While editing the regex, also ensure that the suffix is precisely `.tgz` and
not merely `tgz` by adding an explicit `\.`, previously the literal `.` would
be swallowed by the `.*` instead.

Signed-off-by: Ian Campbell <ijc@docker.com>
2019-03-28 15:56:18 +01:00
docker Fix base_url to keep TCP protocol 2019-03-28 14:16:52 +01:00
docs Bump 3.7.1 2019-03-20 11:56:24 +01:00
scripts scripts/version.py: Use regex grouping to extract the version 2019-03-28 15:56:18 +01:00
tests Fix base_url to keep TCP protocol 2019-03-28 14:16:52 +01:00
.coveragerc Add coverage 2014-07-11 16:13:00 +02:00
.dockerignore Makes docs builds faster and ensures proper ownership 2017-04-15 15:46:52 +02:00
.editorconfig Add EditorConfig to the repo. 2015-10-22 14:06:45 +00:00
.gitignore Add new Sphinx documentation 2016-11-22 17:05:43 +00:00
.travis.yml Update deps for 3.3 & 3.7 support 2018-07-18 19:21:54 -07:00
CONTRIBUTING.md Rename non-URL occurrences of docker-py to "Docker SDK for Python" 2016-12-12 13:28:49 -08:00
Dockerfile Merge pull request #1315 from bfirsh/rename-docker-py-to-docker-sdk-python 2016-12-02 15:20:34 -08:00
Dockerfile-docs Makes docs builds faster and ensures proper ownership 2017-04-15 15:46:52 +02:00
Dockerfile-py3 Add Python 3.6 testing 2018-01-22 18:08:01 -08:00
Jenkinsfile Remove use_config_proxy from exec. Add use_config_proxy docs to DockerClient 2019-01-09 14:45:13 -08:00
LICENSE Fix licenses 2016-09-05 17:48:09 +02:00
MAINTAINERS Update MAINTAINERS file 2018-03-26 14:13:57 -07:00
MANIFEST.in Add create_plugin implementation 2017-02-09 17:58:05 -08:00
Makefile Revert "make the integration tests more verbose" 2019-01-09 11:30:58 -08:00
README.md Require "requests[security]" if the `[tls]` option is selected, which also installs: 2017-08-17 13:38:40 -07:00
appveyor.yml Add Python 3.6 testing 2018-01-22 18:08:01 -08:00
docs-requirements.txt Add new Sphinx documentation 2016-11-22 17:05:43 +00:00
pytest.ini Re-enable stdout/stderr capturing in tests 2016-01-25 11:43:23 +00:00
requirements.txt Modernize auth management 2018-11-28 19:32:01 -08:00
setup.cfg Add License to PyPi metadata 2017-03-17 13:39:55 -04:00
setup.py Update test dependencies to latest version, fix some flake8 errors 2019-01-09 11:18:40 -08:00
test-requirements.txt Update test dependencies to latest version, fix some flake8 errors 2019-01-09 11:18:40 -08:00
tox.ini Update deps for 3.3 & 3.7 support 2018-07-18 19:21:54 -07:00
win32-requirements.txt Fix appveyor tests 2018-01-26 13:44:31 -08:00

README.md

Docker SDK for Python

Build Status

A Python library for the Docker Engine API. It lets you do anything the docker command does, but from within Python apps run containers, manage containers, manage Swarms, etc.

Installation

The latest stable version is available on PyPI. Either add docker to your requirements.txt file or install with pip:

pip install docker

If you are intending to connect to a docker host via TLS, add docker[tls] to your requirements instead, or install with pip:

pip install docker[tls]

Usage

Connect to Docker using the default socket or the configuration in your environment:

import docker
client = docker.from_env()

You can run containers:

>>> client.containers.run("ubuntu:latest", "echo hello world")
'hello world\n'

You can run containers in the background:

>>> client.containers.run("bfirsh/reticulate-splines", detach=True)
<Container '45e6d2de7c54'>

You can manage containers:

>>> client.containers.list()
[<Container '45e6d2de7c54'>, <Container 'db18e4f20eaa'>, ...]

>>> container = client.containers.get('45e6d2de7c54')

>>> container.attrs['Config']['Image']
"bfirsh/reticulate-splines"

>>> container.logs()
"Reticulating spline 1...\n"

>>> container.stop()

You can stream logs:

>>> for line in container.logs(stream=True):
...   print line.strip()
Reticulating spline 2...
Reticulating spline 3...
...

You can manage images:

>>> client.images.pull('nginx')
<Image 'nginx'>

>>> client.images.list()
[<Image 'ubuntu'>, <Image 'nginx'>, ...]

Read the full documentation to see everything you can do.