A Python library for the Docker Engine API

Overview

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.

Comments
  • SSL: CERTIFICATE_VERIFY_FAILED error with boot2docker

    SSL: CERTIFICATE_VERIFY_FAILED error with boot2docker

    Using the latest versions of docker-py and boot2docker I'm unable to make simple requests, receiving an SSL: CERTIFICATE_VERIFY_FAILED error.

    Given the following test case.

    > cat test.py
    from docker.client import Client
    from docker.utils import kwargs_from_env
    
    kwargs = kwargs_from_env()
    
    client = Client(**kwargs)
    print client.version()
    

    I get the following error:

    python test.py                                                                                                                                                                                                     ~/Documents/puppet2docker
    Traceback (most recent call last):
      File "test.py", line 10, in <module>
        print client.version()
      File "/Users/garethr/Documents/puppet2docker/lib/python2.7/site-packages/docker_py-0.7.1-py2.7.egg/docker/client.py", line 986, in version
        return self._result(self._get(self._url("/version")), True)
      File "/Users/garethr/Documents/puppet2docker/lib/python2.7/site-packages/docker_py-0.7.1-py2.7.egg/docker/client.py", line 81, in _get
        return self.get(url, **self._set_request_timeout(kwargs))
      File "/Users/garethr/Documents/puppet2docker/lib/python2.7/site-packages/requests-2.4.3-py2.7.egg/requests/sessions.py", line 469, in get
        return self.request('GET', url, **kwargs)
      File "/Users/garethr/Documents/puppet2docker/lib/python2.7/site-packages/requests-2.4.3-py2.7.egg/requests/sessions.py", line 457, in request
        resp = self.send(prep, **send_kwargs)
      File "/Users/garethr/Documents/puppet2docker/lib/python2.7/site-packages/requests-2.4.3-py2.7.egg/requests/sessions.py", line 569, in send
        r = adapter.send(request, **kwargs)
      File "/Users/garethr/Documents/puppet2docker/lib/python2.7/site-packages/requests-2.4.3-py2.7.egg/requests/adapters.py", line 420, in send
        raise SSLError(e, request=request)
    requests.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:581)
    

    Looking further, kwargs_to_env does appear to have picked everything up correctly:

    (Pdb) kwargs['tls'].__dict__
    {'assert_hostname': None, 'cert': ('/Users/garethr/.boot2docker/certs/boot2docker-vm/cert.pem', '/Users/garethr/.boot2docker/certs/boot2docker-vm/key.pem'), 'ssl_version': 5, 'verify': '/Users/garethr/.boot2docker/certs/boot2docker-vm/ca.pem'}
    

    And the referenced certs exist:

    ls /Users/garethr/.boot2docker/certs/boot2docker-vm/
    ca.pem   cert.pem key.pem
    

    I'm using Python 2.7.9 on OSX.

    > python --version
    Python 2.7.9
    

    And using docker-py 0.7.1 and boot2docker v1.4.1.

    > pip list                                                                                                                                                         backports.ssl-match-hostname (3.4.0.2)
    cement (2.4.0)
    docker-py (0.7.1)
    pip (1.5.6)
    puppet-docker (0.1.0)
    requests (2.4.3)
    setuptools (3.6)
    six (1.9.0)
    websocket-client (0.23.0)
    wsgiref (0.1.2)
    
    > boot2docker version
    Boot2Docker-cli version: v1.4.1
    Git commit: 43241cb
    

    Note that with the above environment, I can successfully use the official docker CLI.

    > docker version
    Client version: 1.4.1
    Client API version: 1.16
    Go version (client): go1.3.3
    Git commit (client): 5bc2ff8
    OS/Arch (client): darwin/amd64
    Server version: 1.4.1
    Server API version: 1.16
    Go version (server): go1.3.3
    Git commit (server): 5bc2ff8
    
    status/need-info group/documentation 
    opened by garethr 42
  • Add device requests

    Add device requests

    Another take on #2395: while the Docker CLI adds a --gpus parameter, it is in fact syntatic sugar for the DeviceRequests argument in a container's host config. This PR adds support for any kind of device request, as it seems the API was designed to handle more in the future than just GPUs.

    It would still be possible to support another gpus=... argument in a way similar to #2465, that could handle the previous nvidia runtime and set the environment variables itself or use the new device requests.

    For example, with NVIDIA's test image, the equivalent of --gpus all would be:

    client.containers.run(
        'nvidia/cuda:9.0-base',
        'nvidia-smi',
        device_requests=[
            docker.types.DeviceRequest(count=-1, capabilities=[['gpu']])
        ]
    )
    

    The equivalent of --gpus 2 would be DeviceRequest(count=2, capabilities=[['gpu']]).

    And for something like --gpus device=GPU-c6e298ba-aa33-4083-8ae3-db4e27037475,driver=nvidia,capabilities="utility,display":

    client.containers.run(
        'nvidia/cuda:9.0-base',
        'nvidia-smi',
        device_requests=[
            docker.types.DeviceRequest(
                driver='nvidia',
                device_ids=['GPU-c6e298ba-aa33-4083-8ae3-db4e27037475'],
                capabilities=[
                    ['gpu', 'utility', 'display']
                ]
            )
        ]
    )
    
    opened by Lucidiot 32
  • tlsv1 alert protocol version on 1.7.1 and 1.7.2 but not on 1.7.0

    tlsv1 alert protocol version on 1.7.1 and 1.7.2 but not on 1.7.0

    Similar to #949 I'm discovering issues with latest versions of docker-py running against docker 1.10.2 instance. I'm using docker.utils.kwargs_from_env(assert_hostname=False). Things work fine with version 1.7.0.

    Docker client is initialized via

    client = docker.Client(
        version='auto',
        **docker.utils.kwargs_from_env(assert_hostname=False))
    

    with docker environment variables being set to the following (via docker-machine)

    DOCKER_HOST=tcp://192.168.156.137:2376
    DOCKER_MACHINE_NAME=dev2
    DOCKER_TLS_VERIFY=1
    DOCKER_CERT_PATH=/Users/benjixx/.docker/machine/machines/dev2
    

    docker-py 1.7.1 and 1.7.2 now raise the following exception:

    DockerException: Error while fetching server API version: [Errno 1] _ssl.c:507: error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version
    

    Any idea what's happening here?

    kind/bug 
    opened by benjixx 27
  • Fix lost data & hangs when reading chunked streams

    Fix lost data & hangs when reading chunked streams

    I managed to track down a hang when calling build() to a problem handling streams.

    strace proved that the problem was somewhere in the python client and I manage to create a test harness for this issue.

    This is not the most elegant fix, I could do with some advice:

    • I've changed the return value of attach_socket
    • In _stream_helper it creates a new fileobj, when we just threw away the one which had our data buffer in it, we could just keep the old one.
    opened by leth 27
  • error while using docker for mac client 2.5.0.0

    error while using docker for mac client 2.5.0.0

    Using python 3.8.5 and docker-py version 4.3.1

      File "/Users/mmoskwa/.local/share/virtualenvs/lunchbox-5JMc0Mx2/lib/python3.8/site-packages/docker/models/containers.py", line 887, in get
        resp = self.client.api.inspect_container(container_id)
      File "/Users/mmoskwa/.local/share/virtualenvs/lunchbox-5JMc0Mx2/lib/python3.8/site-packages/docker/utils/decorators.py", line 19, in wrapped
        return f(self, resource_id, *args, **kwargs)
      File "/Users/mmoskwa/.local/share/virtualenvs/lunchbox-5JMc0Mx2/lib/python3.8/site-packages/docker/api/container.py", line 771, in inspect_container
        self._get(self._url("/containers/{0}/json", container)), True
      File "/Users/mmoskwa/.local/share/virtualenvs/lunchbox-5JMc0Mx2/lib/python3.8/site-packages/docker/utils/decorators.py", line 46, in inner
        return f(self, *args, **kwargs)
      File "/Users/mmoskwa/.local/share/virtualenvs/lunchbox-5JMc0Mx2/lib/python3.8/site-packages/docker/api/client.py", line 228, in _get
        return self.get(url, **self._set_request_timeout(kwargs))
      File "/Users/mmoskwa/.local/share/virtualenvs/lunchbox-5JMc0Mx2/lib/python3.8/site-packages/requests/sessions.py", line 543, in get
        return self.request('GET', url, **kwargs)
      File "/Users/mmoskwa/.local/share/virtualenvs/lunchbox-5JMc0Mx2/lib/python3.8/site-packages/requests/sessions.py", line 530, in request
        resp = self.send(prep, **send_kwargs)
      File "/Users/mmoskwa/.local/share/virtualenvs/lunchbox-5JMc0Mx2/lib/python3.8/site-packages/requests/sessions.py", line 685, in send
        r.content
      File "/Users/mmoskwa/.local/share/virtualenvs/lunchbox-5JMc0Mx2/lib/python3.8/site-packages/requests/models.py", line 829, in content
        self._content = b''.join(self.iter_content(CONTENT_CHUNK_SIZE)) or b''
      File "/Users/mmoskwa/.local/share/virtualenvs/lunchbox-5JMc0Mx2/lib/python3.8/site-packages/requests/models.py", line 754, in generate
        raise ChunkedEncodingError(e)
    requests.exceptions.ChunkedEncodingError: ('Connection broken: IncompleteRead(0 bytes read)', IncompleteRead(0 bytes read))
    
    opened by mattmoskwa 25
  • Fix to enable streaming container logs reliably

    Fix to enable streaming container logs reliably

    This patch is based on @kevinastone 's code in: https://github.com/docker/docker-py/issues/300#issuecomment-55320544

    Started a ubuntu container that just runs "ping 8.8.8.8" and tried the sample code in https://gist.github.com/dims/c3327f633c526847c8e5 to recreate the problem mentioned in: https://github.com/docker/docker-py/issues/300

    To debug the problem i printed the byte array read in recvall when reading STREAM_HEADER_SIZE_BYTES and realized that the data being read was far ahead of the actual start of the header documented in the vnd.docker.raw-stream of the docker remote api. This is possibly because the requests/urllib3 is reading ahead a bit more and we shouldn't be trying to hack the internals of those projects. So just using the documented file-like response.raw is good enough for us to get the functionality we need which is being able to read for exactly where the stream header starts. With this change i can reliably stream the logs just like "docker logs --follow".

    opened by dims 22
  • requests.exceptions.SSLError: hostname '192.168.59.103' doesn't match 'boot2docker'

    requests.exceptions.SSLError: hostname '192.168.59.103' doesn't match 'boot2docker'

    Hey guys,

    I'm try to access some boot2docker (1.3.1 - mac) VMs built under custom name with docker-py (latest pip version - 0.6.0), and it seems there is something wrong in the SSL module.

    [[email protected] ~:]$    export DOCKER_HOST=tcp://192.168.59.103:2376
    [[email protected] ~:]$    export DOCKER_CERT_PATH=/Users/thibaultbronchain/.boot2docker/certs/Docker-Wordpress-NoASG-DualNode-0
    [[email protected] ~:]$    export DOCKER_TLS_VERIFY=1
    [[email protected] ~:]$python
    Python 2.7.6 (default, Sep  9 2014, 15:04:36)
    [GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.39)] on darwin
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import docker
    >>> from docker.client import Client
    >>> from docker.utils import kwargs_from_env
    >>> client = docker.Client(**kwargs_from_env())
    >>> kwargs_from_env()
    {'tls': <docker.tls.TLSConfig object at 0x10a970b10>, 'base_url': 'https://192.168.59.103:2376'}
    >>> client.images()
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "/Library/Python/2.7/site-packages/docker/client.py", line 634, in images
        res = self._result(self._get(self._url("/images/json"), params=params),
      File "/Library/Python/2.7/site-packages/docker/client.py", line 76, in _get
        return self.get(url, **self._set_request_timeout(kwargs))
      File "/Library/Python/2.7/site-packages/requests/sessions.py", line 469, in get
        return self.request('GET', url, **kwargs)
      File "/Library/Python/2.7/site-packages/requests/sessions.py", line 457, in request
        resp = self.send(prep, **send_kwargs)
      File "/Library/Python/2.7/site-packages/requests/sessions.py", line 569, in send
        r = adapter.send(request, **kwargs)
      File "/Library/Python/2.7/site-packages/requests/adapters.py", line 420, in send
        raise SSLError(e, request=request)
    requests.exceptions.SSLError: hostname '192.168.59.103' doesn't match 'boot2docker'
    >>> ^D
    [[email protected] ~:]$docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
    

    Thanks for the help!

    opened by tbronchain 22
  • Support for .dockerignore

    Support for .dockerignore

    According to https://docs.docker.com/reference/builder/#dockerignore you can have a .dockerignore file that prevents items from being ADDed. Mine looks like this:

    .git
    

    And then in my Dockerfile I have

    ADD . /root/mycodes/
    

    Unfortunately I still see /root/mycodes/.git in my container, which is sad because it's almost 300M. Is there any way to support this?

    group/api-upgrade kind/feature-request 
    opened by hamiltont 22
  • WIP: Adding nvidia-docker support

    WIP: Adding nvidia-docker support

    Currently just a proof of concept for nvidia-docker support, as discussed in docker/compose#4657

    TL;DR;

    It's working at least. Automatically used nvidia-docker mounts when starting a container with GPU support


    There's a number of things I'm not 100% happy with yet.

    1. Where I had to put the code (at the very least I should put it in its own function)
    2. It's pretty fragile right now.
      • If you don't have nvidia on your host, it'll probably fail because devices don't exist
      • If you specify a bad GPU with NV_GPU it will fail. But this is the same behavior as nvidia-docker, this this is perhaps ok
    3. If you want to disable the nvidia-docker support feature, there's nothing to do that with.

    I'd like some guidance to these issues and what direction you would like me to go in.

    opened by andyneff 20
  • Add utility to create a build context from a git repository.

    Add utility to create a build context from a git repository.

    The reason is because it won't work if you pass a private git repository as the build URL.

    See docker/compose#2856 for more information, including a simple test-case by @zkf.

    Instead, docker-py should follow the same steps as docker: if the build URL is a git repository, it should clone the repo locally and pass as a tarball to the daemon.

    I believe the problem is caused by how docker-py performs a build (here) instead of following the same steps as docker.

    Please let me know if I'm misunderstanding the problem or if there's any other way I can help.

    Here is my version information:

    OS X El Capitan 10.11.2 (15C50)
    docker-py==1.8.0.dev0
    Python 2.7.9
    Client:
     Version:      1.11.0-dev
     API version:  1.23
     Go version:   go1.6
     Git commit:   bc730f3-unsupported
     Built:        Tue Mar  8 19:01:29 2016
     OS/Arch:      linux/amd64
    
    Server:
     Version:      1.11.0-dev
     API version:  1.23
     Go version:   go1.6
     Git commit:   bc730f3-unsupported
     Built:        Tue Mar  8 19:01:29 2016
     OS/Arch:      linux/amd64
    
    kind/feature-request 
    opened by apeace 20
  • docker-py cannot bind local files into a container?

    docker-py cannot bind local files into a container?

    hi,all! I ofen bind host files into containers by using "-v /path/to/host/file:/container/file:ro", when I using command line client. But now, I need to use docker-py to manage my containers. And I also need to do the same work:bind some host files into containers. And my code is like this (for example)


    ......
    "volumes":["/etc/localtime"],
    ......
    "binds":{
            "/etc/localtime":{
                     "bind":"/etc/localtime",
                     "ro":true
            }
    },
    

    unfortunately, problem emerged: APIError: 500 Server Error: Internal Server Error ( "Cannot start container 1c1......d7051: setup mount namespace mounting /var/lib/docker/vfs/dir/575....9f73 into /var/lib/docker/devicemapper/mnt/1c1f7f.....1edd7051/rootfs/etc/localtime not a directory")

    what is the solution?

    kind/bug level/docker-engine 
    opened by wuyudian1 20
  • Add types

    Add types

    Fixes #2796.

    • [ ] api
    • [ ] context
    • [ ] credentials
    • [ ] models
    • [ ] transport
    • [ ] types
    • [ ] utils
    • [x] auth.py
    • [x] client.py
    • [x] constants.py
    • [x] errors.py
    • [x] tls.py
    • [x] version.py

    I have used Dict[str, Any] in auth.py and client.py in some places, we might want to narrow the types using TypedDict instead (or other solutions, can be discussed).

    Notes:

    • As adding types will add a lot of imports and changes to the code layout, isort and a code formatter could be enforced.

    • I suggest we change json and binary to keyword only arguments. If used as an argument, this could lead to confusion (see here for example). https://github.com/docker/docker-py/blob/82cf559b5a641f53e9035b44b91f829f3b4cca80/docker/api/client.py#L272

    • config_path and config_dict can be made Optional, as this classmethod is already called with optional arguments here. https://github.com/docker/docker-py/blob/82cf559b5a641f53e9035b44b91f829f3b4cca80/docker/auth.py#L153-L164

    • Before continuing, I'd like to know if:

      • Using typing_extensions is fine (required for Literal, introduced in Python3.8)
      • You want to have type stubs defined either in code, in pyi files, or implemented in typeshed. Some methods require overloads, and this would add a lot of boilerplate in the source code itself, wich is may not be what people contributing to this repository want to see. If we chose to implement stubs in separate pyi files, we could type the public API only, but developers of this library won't benefit from types for internal objects.

    (@aiordache @ulyssessouza @milas; tagging as this is a draft PR).

    opened by Viicos 0
  • Weird behavior with follow=True blocking execution when running container exits

    Weird behavior with follow=True blocking execution when running container exits

    Environment:

    OS: Ubuntu 22.04.1 LTS Docker Engine: 20.10.21 Python version: 3.10.6 docker-py: 6.0.1

    Context

    The Python script below runs wrapped by a GitLab runner process that is a CLI application written with Typer. The logging driver of Docker is journald

    GitLab Runner: 15.6.1 Typer: 0.7.0

    Question

    I am trying to print logs from a running container. (it's execution is very fast)

    import docker
    
    cli = docker.from_env()
    container = cli.containers.run(image=image, detach=True, remove=False)
    
    for cl in container.logs(stream=True, follow=True):
        typer.secho(cl.strip(), fg=typer.colors.BLUE)
    
    container.remove()
    

    For a reason, container.logs(stream=True, follow=True) is acting weirdly whenever the detached container exits. Sometimes the execution of my program resumes and finishes properly and very often, the underlying container exits and my program get stuck in the for loop, doing nothing.

    This has for consequence that jobs running in GitLab are timeouting due to no exit code of my cli.

    It seems most likely system related since I can run the cli from my laptop without trouble. Any ideas from where the problem could come?

    opened by MadJlzz 0
  • Add `network_driver_opt` to client.containers run and create

    Add `network_driver_opt` to client.containers run and create

    This pull request adds an additional parameter to client.containers.run and client.containers.create called network_driver_opt.

    This parameter allows to specify a dict which allows to pass to the driver some custom values, and it is the same already present in Network.connect.

    I requested this feature in #2896, but it was never implemented.

    I think it could be useful to also export other parameters of networking_config.

    opened by Skazza94 0
  • build(deps): Bump setuptools from 63.2.0 to 65.5.1

    build(deps): Bump setuptools from 63.2.0 to 65.5.1

    Bumps setuptools from 63.2.0 to 65.5.1.

    Changelog

    Sourced from setuptools's changelog.

    v65.5.1

    Misc ^^^^

    • #3638: Drop a test dependency on the mock package, always use :external+python:py:mod:unittest.mock -- by :user:hroncok
    • #3659: Fixed REDoS vector in package_index.

    v65.5.0

    Changes ^^^^^^^

    • #3624: Fixed editable install for multi-module/no-package src-layout projects.
    • #3626: Minor refactorings to support distutils using stdlib logging module.

    Documentation changes ^^^^^^^^^^^^^^^^^^^^^

    • #3419: Updated the example version numbers to be compliant with PEP-440 on the "Specifying Your Project’s Version" page of the user guide.

    Misc ^^^^

    • #3569: Improved information about conflicting entries in the current working directory and editable install (in documentation and as an informational warning).
    • #3576: Updated version of validate_pyproject.

    v65.4.1

    Misc ^^^^

    v65.4.0

    Changes ^^^^^^^

    v65.3.0

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Examples

    Examples

    Hi, it would be great if you guys could provide more example scripts for building specific images, automating docker container builds and running multiple commands inside a single container. Apologies if there are examples already, I haven't seemed to find many. I know in the documentation there are some line by line examples, but I didn't find them explanatory enough and I am struggling a fair bit with docker.

    opened by James-Ilosta 0
Releases(6.0.1)
  • 6.0.1(Nov 2, 2022)

    🐛 Bugfixes

    • Fix for The pipe has been ended errors on Windows (#3056)
    • Support floats for timestamps in Docker logs (since / until) (#3031)

    What's Changed

    • docs: install package in ReadTheDocs build by @milas in https://github.com/docker/docker-py/pull/3032
    • Use latest stable syntax for Dockerfiles by @thaJeztah in https://github.com/docker/docker-py/pull/3035
    • feat: add support for floats to docker logs params since / until sinc… by @ArchiMoebius in https://github.com/docker/docker-py/pull/3031
    • Change prune test to use anonymous volumes by @cpuguy83 in https://github.com/docker/docker-py/pull/3051
    • socket: handle npipe close by @nicks in https://github.com/docker/docker-py/pull/3056

    New Contributors

    • @ArchiMoebius made their first contribution in https://github.com/docker/docker-py/pull/3031
    • @nicks made their first contribution in https://github.com/docker/docker-py/pull/3056

    Full Changelog: https://github.com/docker/docker-py/compare/6.0.0...6.0.1

    Source code(tar.gz)
    Source code(zip)
    docker-6.0.1-py3-none-any.whl(144.04 KB)
    docker-6.0.1.tar.gz(251.86 KB)
  • 6.0.0(Aug 18, 2022)

    ℹ️ Upgrade Notes

    • Minimum supported Python version is 3.7+
    • When installing with pip, the docker[tls] extra is deprecated and a no-op, use docker for same functionality (TLS support is always available now)
    • Native Python SSH client (used by default / use_ssh_client=False) will now reject unknown host keys with paramiko.ssh_exception.SSHException
    • Short IDs are now 12 characters instead of 10 characters (same as Docker CLI)
    • Version metadata is now exposed as __version__

    ✨ Features

    • Python 3.10 support
    • Automatically negotiate most secure TLS version
    • Add platform (e.g. linux/amd64, darwin/arm64) to container create & run
    • Add support for GlobalJob and ReplicatedJobs for Swarm
    • Add remove() method on Image
    • Add force param to disable() on Plugin

    🐛 Bugfixes

    • Fix install issues on Windows related to pywin32
    • Do not accept unknown SSH host keys in native Python SSH mode
    • Use 12 character short IDs for consistency with Docker CLI
    • Ignore trailing whitespace in .dockerignore files
    • Fix IPv6 host parsing when explicit port specified
    • Fix ProxyCommand option for SSH connections
    • Do not spawn extra subshell when launching external SSH client
    • Improve exception semantics to preserve context
    • Documentation improvements (formatting, examples, typos, missing params)

    🔧 Miscellaneous

    • Upgrade dependencies in requirements.txt to latest versions
    • Remove extraneous transitive dependencies
    • Eliminate usages of deprecated functions/methods
    • Test suite reliability improvements
    • GitHub Actions workflows for linting, unit tests, integration tests, and publishing releases

    Changelog

    • Update changelog for 5.0.3 by @aiordache in https://github.com/docker/docker-py/pull/2897
    • Add support for Python 3.10 by @hugovk in https://github.com/docker/docker-py/pull/2898
    • Bump paramiko from 2.8.0 to 2.10.1 by @dependabot in https://github.com/docker/docker-py/pull/2974
    • deps: upgrade pywin32 & relax version constraint by @milas in https://github.com/docker/docker-py/pull/3004
    • ci: remove Python 3.6 and add 3.11 pre-releases by @milas in https://github.com/docker/docker-py/pull/3005
    • utils: fix IPv6 address w/ port parsing by @milas in https://github.com/docker/docker-py/pull/3006
    • test_create_with_device_cgroup_rules: don't check devices.list by @thaJeztah in https://github.com/docker/docker-py/pull/2940
    • Fix exception semantics in _raise_for_status by @kmaork in https://github.com/docker/docker-py/pull/2954
    • tls: use auto-negotiated highest version by @milas in https://github.com/docker/docker-py/pull/3007
    • sshcon: remove use of self.ssh_conf by @glicht in https://github.com/docker/docker-py/pull/2993
    • Use packaging instead of distutils for Version by @FrancescoCasalegno in https://github.com/docker/docker-py/pull/2931
    • test: fix a couple flaky/broken tests by @milas in https://github.com/docker/docker-py/pull/3008
    • ci: add flake8 job by @milas in https://github.com/docker/docker-py/pull/3009
    • Fixes and improvements by @kinday in https://github.com/docker/docker-py/pull/2947
    • deps: test on Python 3.10 by default by @milas in https://github.com/docker/docker-py/pull/3010
    • deps: remove backports.ssl_match_hostname by @milas in https://github.com/docker/docker-py/pull/3011
    • Fix: fix CVE-2020-28243 by @errorcode7 in https://github.com/docker/docker-py/pull/2910
    • Fix for CWE-295: Improper Certificate Validation by @avnes in https://github.com/docker/docker-py/pull/2932
    • Set daemon attribute instead of using setDaemon method that was deprecated in Python 3.10 by @tirkarthi in https://github.com/docker/docker-py/pull/2823
    • Remove unnecessary pass statements by @vilhelmprytz in https://github.com/docker/docker-py/pull/2541
    • ci: run SSH integration tests by @milas in https://github.com/docker/docker-py/pull/3012
    • docs: fix simple typo, containe -> container by @timgates42 in https://github.com/docker/docker-py/pull/3015
    • ci: bump version to 6.0.0-dev by @milas in https://github.com/docker/docker-py/pull/3013
    • deps: upgrade & remove unnecessary dependencies by @milas in https://github.com/docker/docker-py/pull/3014
    • lint: fix line length violation by @milas in https://github.com/docker/docker-py/pull/3017
    • docs: fix markdown rendering by @milas in https://github.com/docker/docker-py/pull/3020
    • Return 12 character short_ids by @benfasoli in https://github.com/docker/docker-py/pull/2862
    • api: preserve cause when re-raising error by @milas in https://github.com/docker/docker-py/pull/3023
    • deps: upgrade websocket-client to latest by @milas in https://github.com/docker/docker-py/pull/3022
    • Add platform parameter for create_container() by @felixfontein in https://github.com/docker/docker-py/pull/2927
    • Support cgroupns option in containers.run/containers.create by @david0 in https://github.com/docker/docker-py/pull/2930
    • Prevent pip cache in Docker image to save image size by @PeterDaveHello in https://github.com/docker/docker-py/pull/2828
    • Update: allow "force" parameter in plugin.disable() by @till in https://github.com/docker/docker-py/pull/2843
    • Fix: Issue #2832 Allowing Rollback Config Arg for Services by @ercildoune in https://github.com/docker/docker-py/pull/2917
    • model: add remove() to Image by @milas in https://github.com/docker/docker-py/pull/3026
    • fix(dockerignore): trim trailing whitespace by @kalioz in https://github.com/docker/docker-py/pull/2733
    • Fix TLS server check example to actually verify by @scop in https://github.com/docker/docker-py/pull/2574
    • Clarify TLSConfig verify parameter docs by @scop in https://github.com/docker/docker-py/pull/2573
    • Add healthcheck doc for container.run by @JanoschDeurer in https://github.com/docker/docker-py/pull/2595
    • Fix image save example by @hristog in https://github.com/docker/docker-py/pull/2570
    • Changed a few words to be more clear by @InnovativeInventor in https://github.com/docker/docker-py/pull/2489
    • docs: fix RollbackConfig/Order values by @milas in https://github.com/docker/docker-py/pull/3027
    • ci: add workflow for releases by @milas in https://github.com/docker/docker-py/pull/3018
    • remove duplicate 'on' in comment by @thomasgassmann in https://github.com/docker/docker-py/pull/2370
    • Add gzip documentation to BuildApiMixin by @SauravMaheshkar in https://github.com/docker/docker-py/pull/2929
    • Use preexec_func always by @q0w in https://github.com/docker/docker-py/pull/2920
    • Remove docker.credentials.utils.find_executable by @n1ngu in https://github.com/docker/docker-py/pull/3028
    • Support global-job and replicated-job modes in Docker Swarm by @kinday in https://github.com/docker/docker-py/pull/3016
    • docs: add changelog for 6.0.0 by @milas in https://github.com/docker/docker-py/pull/3019
    • Add sysctl support for docker swarm services by @Aadenei in https://github.com/docker/docker-py/pull/3029
    • Connect with mac address by @YuviGold in https://github.com/docker/docker-py/pull/2481
    • docs/css: remove hyphens in literals by @jrabbit in https://github.com/docker/docker-py/pull/2452
    • Add swarm support for DataPathPort by @dexteradeus in https://github.com/docker/docker-py/pull/2987
    • test: add additional tests for cgroupns option by @milas in https://github.com/docker/docker-py/pull/3024

    New Contributors

    • @hugovk made their first contribution in https://github.com/docker/docker-py/pull/2898
    • @milas made their first contribution in https://github.com/docker/docker-py/pull/3004
    • @kmaork made their first contribution in https://github.com/docker/docker-py/pull/2954
    • @glicht made their first contribution in https://github.com/docker/docker-py/pull/2993
    • @FrancescoCasalegno made their first contribution in https://github.com/docker/docker-py/pull/2931
    • @kinday made their first contribution in https://github.com/docker/docker-py/pull/2947
    • @errorcode7 made their first contribution in https://github.com/docker/docker-py/pull/2910
    • @avnes made their first contribution in https://github.com/docker/docker-py/pull/2932
    • @tirkarthi made their first contribution in https://github.com/docker/docker-py/pull/2823
    • @vilhelmprytz made their first contribution in https://github.com/docker/docker-py/pull/2541
    • @timgates42 made their first contribution in https://github.com/docker/docker-py/pull/3015
    • @benfasoli made their first contribution in https://github.com/docker/docker-py/pull/2862
    • @felixfontein made their first contribution in https://github.com/docker/docker-py/pull/2927
    • @david0 made their first contribution in https://github.com/docker/docker-py/pull/2930
    • @PeterDaveHello made their first contribution in https://github.com/docker/docker-py/pull/2828
    • @till made their first contribution in https://github.com/docker/docker-py/pull/2843
    • @ercildoune made their first contribution in https://github.com/docker/docker-py/pull/2917
    • @kalioz made their first contribution in https://github.com/docker/docker-py/pull/2733
    • @JanoschDeurer made their first contribution in https://github.com/docker/docker-py/pull/2595
    • @hristog made their first contribution in https://github.com/docker/docker-py/pull/2570
    • @InnovativeInventor made their first contribution in https://github.com/docker/docker-py/pull/2489
    • @thomasgassmann made their first contribution in https://github.com/docker/docker-py/pull/2370
    • @SauravMaheshkar made their first contribution in https://github.com/docker/docker-py/pull/2929
    • @q0w made their first contribution in https://github.com/docker/docker-py/pull/2920
    • @n1ngu made their first contribution in https://github.com/docker/docker-py/pull/3028
    • @Aadenei made their first contribution in https://github.com/docker/docker-py/pull/3029
    • @jrabbit made their first contribution in https://github.com/docker/docker-py/pull/2452
    • @dexteradeus made their first contribution in https://github.com/docker/docker-py/pull/2987

    Full Changelog: https://github.com/docker/docker-py/compare/5.0.3...6.0.0

    Source code(tar.gz)
    Source code(zip)
    docker-6.0.0-py3-none-any.whl(143.78 KB)
    docker-6.0.0.tar.gz(251.54 KB)
  • 6.0.0b2(Aug 11, 2022)

    What's Changed

    • remove duplicate 'on' in comment by @thomasgassmann in https://github.com/docker/docker-py/pull/2370
    • Add gzip documentation to BuildApiMixin by @SauravMaheshkar in https://github.com/docker/docker-py/pull/2929
    • Use preexec_func always by @q0w in https://github.com/docker/docker-py/pull/2920
    • Remove docker.credentials.utils.find_executable by @n1ngu in https://github.com/docker/docker-py/pull/3028
    • Support global-job and replicated-job modes in Docker Swarm by @kinday in https://github.com/docker/docker-py/pull/3016
    • docs: add changelog for 6.0.0 by @milas in https://github.com/docker/docker-py/pull/3019

    New Contributors

    • @thomasgassmann made their first contribution in https://github.com/docker/docker-py/pull/2370
    • @SauravMaheshkar made their first contribution in https://github.com/docker/docker-py/pull/2929
    • @q0w made their first contribution in https://github.com/docker/docker-py/pull/2920
    • @n1ngu made their first contribution in https://github.com/docker/docker-py/pull/3028

    Full Changelog: https://github.com/docker/docker-py/compare/6.0.0b1...6.0.0b2

    Source code(tar.gz)
    Source code(zip)
    docker-6.0.0b2-py3-none-any.whl(143.47 KB)
    docker-6.0.0b2.tar.gz(250.92 KB)
  • 6.0.0b1(Jul 30, 2022)

    What's Changed

    • Update changelog for 5.0.3 by @aiordache in https://github.com/docker/docker-py/pull/2897
    • Add support for Python 3.10 by @hugovk in https://github.com/docker/docker-py/pull/2898
    • Bump paramiko from 2.8.0 to 2.10.1 by @dependabot in https://github.com/docker/docker-py/pull/2974
    • deps: upgrade pywin32 & relax version constraint by @milas in https://github.com/docker/docker-py/pull/3004
    • ci: remove Python 3.6 and add 3.11 pre-releases by @milas in https://github.com/docker/docker-py/pull/3005
    • utils: fix IPv6 address w/ port parsing by @milas in https://github.com/docker/docker-py/pull/3006
    • test_create_with_device_cgroup_rules: don't check devices.list by @thaJeztah in https://github.com/docker/docker-py/pull/2940
    • Fix exception semantics in _raise_for_status by @kmaork in https://github.com/docker/docker-py/pull/2954
    • tls: use auto-negotiated highest version by @milas in https://github.com/docker/docker-py/pull/3007
    • sshcon: remove use of self.ssh_conf by @glicht in https://github.com/docker/docker-py/pull/2993
    • Use packaging instead of distutils for Version by @FrancescoCasalegno in https://github.com/docker/docker-py/pull/2931
    • test: fix a couple flaky/broken tests by @milas in https://github.com/docker/docker-py/pull/3008
    • ci: add flake8 job by @milas in https://github.com/docker/docker-py/pull/3009
    • Fixes and improvements by @kinday in https://github.com/docker/docker-py/pull/2947
    • deps: test on Python 3.10 by default by @milas in https://github.com/docker/docker-py/pull/3010
    • deps: remove backports.ssl_match_hostname by @milas in https://github.com/docker/docker-py/pull/3011
    • Fix: fix CVE-2020-28243 by @errorcode7 in https://github.com/docker/docker-py/pull/2910
    • Fix for CWE-295: Improper Certificate Validation by @avnes in https://github.com/docker/docker-py/pull/2932
    • Set daemon attribute instead of using setDaemon method that was deprecated in Python 3.10 by @tirkarthi in https://github.com/docker/docker-py/pull/2823
    • Remove unnecessary pass statements by @vilhelmprytz in https://github.com/docker/docker-py/pull/2541
    • ci: run SSH integration tests by @milas in https://github.com/docker/docker-py/pull/3012
    • docs: fix simple typo, containe -> container by @timgates42 in https://github.com/docker/docker-py/pull/3015
    • ci: bump version to 6.0.0-dev by @milas in https://github.com/docker/docker-py/pull/3013
    • deps: upgrade & remove unnecessary dependencies by @milas in https://github.com/docker/docker-py/pull/3014
    • lint: fix line length violation by @milas in https://github.com/docker/docker-py/pull/3017
    • docs: fix markdown rendering by @milas in https://github.com/docker/docker-py/pull/3020
    • Return 12 character short_ids by @benfasoli in https://github.com/docker/docker-py/pull/2862
    • api: preserve cause when re-raising error by @milas in https://github.com/docker/docker-py/pull/3023
    • deps: upgrade websocket-client to latest by @milas in https://github.com/docker/docker-py/pull/3022
    • Add platform parameter for create_container() by @felixfontein in https://github.com/docker/docker-py/pull/2927
    • Support cgroupns option in containers.run/containers.create by @david0 in https://github.com/docker/docker-py/pull/2930
    • Prevent pip cache in Docker image to save image size by @PeterDaveHello in https://github.com/docker/docker-py/pull/2828
    • Update: allow "force" parameter in plugin.disable() by @till in https://github.com/docker/docker-py/pull/2843
    • Fix: Issue #2832 Allowing Rollback Config Arg for Services by @ercildoune in https://github.com/docker/docker-py/pull/2917
    • model: add remove() to Image by @milas in https://github.com/docker/docker-py/pull/3026
    • fix(dockerignore): trim trailing whitespace by @kalioz in https://github.com/docker/docker-py/pull/2733
    • Fix TLS server check example to actually verify by @scop in https://github.com/docker/docker-py/pull/2574
    • Clarify TLSConfig verify parameter docs by @scop in https://github.com/docker/docker-py/pull/2573
    • Add healthcheck doc for container.run by @JanoschDeurer in https://github.com/docker/docker-py/pull/2595
    • Fix image save example by @hristog in https://github.com/docker/docker-py/pull/2570
    • Changed a few words to be more clear by @InnovativeInventor in https://github.com/docker/docker-py/pull/2489
    • docs: fix RollbackConfig/Order values by @milas in https://github.com/docker/docker-py/pull/3027
    • ci: add workflow for releases by @milas in https://github.com/docker/docker-py/pull/3018

    New Contributors

    • @hugovk made their first contribution in https://github.com/docker/docker-py/pull/2898
    • @milas made their first contribution in https://github.com/docker/docker-py/pull/3004
    • @kmaork made their first contribution in https://github.com/docker/docker-py/pull/2954
    • @glicht made their first contribution in https://github.com/docker/docker-py/pull/2993
    • @FrancescoCasalegno made their first contribution in https://github.com/docker/docker-py/pull/2931
    • @kinday made their first contribution in https://github.com/docker/docker-py/pull/2947
    • @errorcode7 made their first contribution in https://github.com/docker/docker-py/pull/2910
    • @avnes made their first contribution in https://github.com/docker/docker-py/pull/2932
    • @tirkarthi made their first contribution in https://github.com/docker/docker-py/pull/2823
    • @vilhelmprytz made their first contribution in https://github.com/docker/docker-py/pull/2541
    • @timgates42 made their first contribution in https://github.com/docker/docker-py/pull/3015
    • @benfasoli made their first contribution in https://github.com/docker/docker-py/pull/2862
    • @felixfontein made their first contribution in https://github.com/docker/docker-py/pull/2927
    • @david0 made their first contribution in https://github.com/docker/docker-py/pull/2930
    • @PeterDaveHello made their first contribution in https://github.com/docker/docker-py/pull/2828
    • @till made their first contribution in https://github.com/docker/docker-py/pull/2843
    • @ercildoune made their first contribution in https://github.com/docker/docker-py/pull/2917
    • @kalioz made their first contribution in https://github.com/docker/docker-py/pull/2733
    • @JanoschDeurer made their first contribution in https://github.com/docker/docker-py/pull/2595
    • @hristog made their first contribution in https://github.com/docker/docker-py/pull/2570
    • @InnovativeInventor made their first contribution in https://github.com/docker/docker-py/pull/2489

    Full Changelog: https://github.com/docker/docker-py/compare/5.0.3...6.0.0b1

    Source code(tar.gz)
    Source code(zip)
    docker-6.0.0b1-py3-none-any.whl(143.54 KB)
    docker-6.0.0b1.tar.gz(250.08 KB)
  • 5.0.3(Oct 7, 2021)

  • 5.0.2(Sep 1, 2021)

  • 5.0.1(Aug 31, 2021)

  • 5.0.0(Apr 6, 2021)

    List of PRs / issues for this release

    Breaking changes

    • Remove support for Python 2.7
    • Make Python 3.6 the minimum version supported

    Features

    • Add limit parameter to image search endpoint

    Bugfixes

    • Fix KeyError exception on secret create
    • Verify TLS keys loaded from docker contexts
    • Update PORT_SPEC regex to allow square brackets for IPv6 addresses
    • Fix containers and images documentation examples
    Source code(tar.gz)
    Source code(zip)
  • 4.4.4(Feb 24, 2021)

  • 4.4.3(Feb 18, 2021)

  • 4.4.2(Feb 15, 2021)

  • 4.4.1(Jan 7, 2021)

  • 4.4.0(Nov 23, 2020)

    List of PRs / issues for this release

    Features

    • Add an alternative SSH connection to the paramiko one, based on shelling out to the SSh client. Similar to the behaviour of Docker cli
    • Default image tag to latest on pull

    Bugfixes

    • Fix plugin model upgrade
    • Fix examples URL in ulimits

    Miscellaneous

    • Improve exception messages for server and client errors
    • Bump cryptography from 2.3 to 3.2
    Source code(tar.gz)
    Source code(zip)
  • 4.3.1(Aug 21, 2020)

  • 4.3.0(Aug 10, 2020)

    Changelog

    Features

    • Add DeviceRequest type to expose host resources such as GPUs
    • Add support for DriverOpts in EndpointConfig
    • Disable compression by default when using container.get_archive method

    Miscellaneous

    • Update default API version to v1.39
    • Update test engine version to 19.03.12
    Source code(tar.gz)
    Source code(zip)
  • 4.2.2(Jun 30, 2020)

  • 4.2.1(Jun 2, 2020)

  • 4.2.0(Feb 6, 2020)

    List of PRs / issues for this release

    Bugfixes

    • Fix win32pipe.WaitNamedPipe throw exception in Windows containers
    • Use Hostname, Username, Port and ProxyCommand settings from .ssh/config when on SSH
    • Set host key policy for ssh transport to paramiko.WarningPolicy()
    • Set logging level of paramiko to warn

    Features

    • Add support for docker contexts through docker.ContextAPI
    Source code(tar.gz)
    Source code(zip)
  • 4.1.0(Oct 3, 2019)

    List of PRs / issues for this release

    Bugfixes

    • Correct INDEX_URL logic in build.py _set_auth_headers
    • Fix for empty auth keys in config.json

    Features

    • Add NetworkAttachmentConfig for service create/update

    Miscellaneous

    • Bump pytest to 4.3.1
    • Adjust --platform tests for changes in docker engine
    • Update credentials-helpers to v0.6.3
    Source code(tar.gz)
    Source code(zip)
  • 4.0.2(Jun 20, 2019)

  • 4.0.1(May 19, 2019)

  • 4.0.0(May 19, 2019)

    List of PRs / issues for this release

    Breaking changes

    • Support for Python 3.3 and Python 3.4 has been dropped
    • APIClient.update_service, APIClient.init_swarm, and DockerClient.swarm.init now return a dict from the API's response body
    • In APIClient.build and DockerClient.images.build, the use_config_proxy parameter now defaults to True
    • init_path is no longer a valid parameter for HostConfig

    Features

    • It is now possible to provide SCTP ports for port mappings
    • ContainerSpecs now support the init parameter
    • DockerClient.swarm.init and APIClient.init_swarm now support the data_path_addr parameter
    • APIClient.update_swarm and DockerClient.swarm.update now support the rotate_manager_unlock_key parameter
    • APIClient.update_service returns the API's response body as a dict
    • APIClient.init_swarm, and DockerClient.swarm.init now return the API's response body as a dict

    Bugfixes

    • Fixed PlacementPreference instances to produce a valid API type
    • Fixed a bug where not setting a value for buildargs in build could cause the library to attempt accessing attributes of a None value
    • Fixed a bug where setting the volume_driver parameter in DockerClient.containers.create would result in an error
    • APIClient.inspect_distribution now correctly sets the authentication headers on the request, allowing it to be used with private repositories This change also applies to DockerClient.get_registry_data
    Source code(tar.gz)
    Source code(zip)
  • 3.7.2(Mar 28, 2019)

  • 3.7.1(Mar 20, 2019)

  • 3.7.0(Jan 10, 2019)

    List of PRs / issues for this release

    Features

    • Added support for multiplexed streams (for attach and exec_start). Learn more at https://docker-py.readthedocs.io/en/stable/user_guides/multiplex.html
    • Added the use_config_proxy parameter to the following methods: APIClient.build, APIClient.create_container, DockerClient.images.build and DockerClient.containers.run (False by default). This parameter will become True by default in the 4.0.0 release.
    • Placement preferences for Swarm services are better validated on the client and documentation has been updated accordingly

    Bugfixes

    • Fixed a bug where credential stores weren't queried for relevant registry credentials with certain variations of the config.json file.
    • DockerClient.swarm.init now returns a boolean value as advertised.
    Source code(tar.gz)
    Source code(zip)
  • 3.6.0(Nov 28, 2018)

    List of PRs / issues for this release

    Features

    • Added support for connecting to the Docker Engine over SSH. Additional dependencies for this feature can be installed with pip install "docker[ssh]"
    • Added support for the named parameter in Image.save, which may be used to ensure the resulting tarball retains the image's name on save.

    Bugfixes

    • Fixed a bug where builds on Windows with a context path using the \\?\ prefix would fail with some relative Dockerfile paths.
    • Fixed an issue where pulls made with the DockerClient would fail when setting the stream parameter to True.

    Miscellaneous

    • The minimum requirement for the requests dependency has been bumped to 2.20.0
    Source code(tar.gz)
    Source code(zip)
  • 3.5.1(Oct 17, 2018)

  • 3.5.0(Aug 10, 2018)

    List of PRs / issues for this release

    Deprecation warning

    • Support for Python 3.3 will be dropped in the 4.0.0 release

    Features

    • Updated dependencies to ensure support for Python 3.7 environments
    • Added support for the uts_mode parameter in HostConfig
    • The UpdateConfig constructor now allows rollback as a valid value for failure_action
    • Added support for rollback_config in APIClient.create_service, APIClient.update_service, DockerClient.services.create and Service.update.

    Bugfixes

    • Credential helpers are now properly leveraged by the build method
    • Fixed a bug that caused placement preferences to be ignored when provided to DockerClient.services.create
    • Fixed a bug that caused a user value of 0 to be ignored in APIClient.create_container and DockerClient.containers.create
    Source code(tar.gz)
    Source code(zip)
  • 3.4.1(Aug 9, 2018)

  • 3.4.0(Jun 18, 2018)

    List of PRs / issues for this release

    Features

    • The APIClient and DockerClient constructors now accept a credstore_env parameter. When set, values in this dictionary are added to the environment when executing the credential store process.

    Bugfixes

    • DockerClient.networks.prune now properly returns the operation's result
    • Fixed a bug that caused custom Dockerfile paths in a subfolder of the build context to be invalidated, preventing these builds from working
    • The plugin_privileges method can now be called for plugins requiring authentication to access
    • Fixed a bug that caused attempts to read a data stream over an unsecured TCP socket to crash on Windows clients
    • Fixed a bug where using the read_only parameter when creating a service using the DockerClient was being ignored
    • Fixed an issue where Service.scale would not properly update the service's mode, causing the operation to fail silently
    Source code(tar.gz)
    Source code(zip)
Owner
Docker
Docker provides a simple and powerful developer experience, workflows and collaboration for creating applications.
Docker
pyinfra automates infrastructure super fast at massive scale. It can be used for ad-hoc command execution, service deployment, configuration management and more.

pyinfra automates/provisions/manages/deploys infrastructure super fast at massive scale. It can be used for ad-hoc command execution, service deployme

Nick Barrett 2.1k Dec 29, 2022
Run Oracle on Kubernetes with El Carro

El Carro is a new project that offers a way to run Oracle databases in Kubernetes as a portable, open source, community driven, no vendor lock-in container orchestration system. El Carro provides a p

Google Cloud Platform 205 Dec 30, 2022
Hackergame nc 类题目的 Docker 容器资源限制、动态 flag、网页终端

Hackergame nc 类题目的 Docker 容器资源限制、动态 flag、网页终端 快速入门 配置证书 证书用于验证用户 Token。请确保这里的证书文件(cert.pem)与 Hackergame 平台 配置的证书相同,这样 Hackergame 平台为每个用户生成的 Token 才可以通

USTC Hackergame 68 Nov 09, 2022
A Python library for the Docker Engine API

Docker SDK for Python A Python library for the Docker Engine API. It lets you do anything the docker command does, but from within Python apps – run c

Docker 6.1k Dec 31, 2022
Flexible and scalable monitoring framework

Presentation of the Shinken project Welcome to the Shinken project. Shinken is a modern, Nagios compatible monitoring framework, written in Python. It

Gabès Jean 1.1k Dec 18, 2022
Convenient tool to manage multiple VMs at once using libvirt

Convenient tool to manage multiple VMs at once using libvirt Installing To install the tool and its dependencies: pip install -e . Getting completion

Cedric Bosdonnat 13 Nov 11, 2022
MagTape is a Policy-as-Code tool for Kubernetes that allows for evaluating Kubernetes resources against a set of defined policies to inform and enforce best practice configurations.

MagTape is a Policy-as-Code tool for Kubernetes that allows for evaluating Kubernetes resources against a set of defined policies to inform and enforce best practice configurations. MagTape includes

T-Mobile 143 Dec 27, 2022
A cpp project template that uses CMake to build and Google Test / Github Actions to provide a CI

A cpp project template that uses CMake to build and Google Test / Github Actions to provide a CI

Martin Olivier 6 Nov 17, 2022
Helperpod - A CLI tool to run a Kubernetes utility pod with pre-installed tools that can be used for debugging/testing purposes inside a Kubernetes cluster

Helperpod is a CLI tool to run a Kubernetes utility pod with pre-installed tools that can be used for debugging/testing purposes inside a Kubernetes cluster.

Atakan Tatlı 2 Feb 05, 2022
Rundeck / Grafana / Prometheus / Rundeck Exporter integration demo

Rundeck / Prometheus / Grafana integration demo via Rundeck Exporter This is a demo environment that shows how to monitor a Rundeck instance using Run

Reiner 4 Oct 14, 2022
More than 130 check plugins for Icinga and other Nagios-compatible monitoring applications. Each plugin is a standalone command line tool (written in Python) that provides a specific type of check.

Python-based Monitoring Check Plugins Collection This Enterprise Class Check Plugin Collection offers a package of more than 130 Python-based, Nagios-

Linuxfabrik 119 Dec 27, 2022
Kubediff: a tool for Kubernetes to show differences between running state and version controlled configuration.

Kubediff: a tool for Kubernetes to show differences between running state and version controlled configuration.

Weaveworks 1.1k Dec 30, 2022
This project shows how to serve an TF based image classification model as a web service with TFServing, Docker, and Kubernetes(GKE).

Deploying ML models with CPU based TFServing, Docker, and Kubernetes By: Chansung Park and Sayak Paul This project shows how to serve a TensorFlow ima

Chansung Park 104 Dec 28, 2022
Python job scheduling for humans.

schedule Python job scheduling for humans. Run Python functions (or any other callable) periodically using a friendly syntax. A simple to use API for

Dan Bader 10.4k Jan 02, 2023
Bugbane - Application security tools for CI/CD pipeline

BugBane Набор утилит для аудита безопасности приложений. Основные принципы и осо

GardaTech 20 Dec 09, 2022
Simple, Pythonic remote execution and deployment.

Welcome to Fabric! Fabric is a high level Python (2.7, 3.4+) library designed to execute shell commands remotely over SSH, yielding useful Python obje

Fabric 13.8k Jan 06, 2023
ZeroMQ bindings for Twisted

Twisted bindings for 0MQ Introduction txZMQ allows to integrate easily ØMQ sockets into Twisted event loop (reactor). txZMQ supports both CPython and

Andrey Smirnov 149 Dec 08, 2022
Build Netbox as a Docker container

netbox-docker The Github repository houses the components needed to build Netbox as a Docker container. Images are built using this code and are relea

Farshad Nick 1 Dec 18, 2021
Tools and Docker images to make a fast Ruby on Rails development environment

Tools and Docker images to make a fast Ruby on Rails development environment. With the production templates, moving from development to production will be seamless.

1 Nov 13, 2022
Universal Command Line Interface for Amazon Web Services

aws-cli This package provides a unified command line interface to Amazon Web Services. Jump to: Getting Started Getting Help More Resources Getting St

Amazon Web Services 13.3k Jan 01, 2023