Releases: docker/docker-py
Releases · docker/docker-py
7.0.0
Upgrade Notes (from 6.x) ⚠️
- Removed SSL version (
ssl_version
) and explicit hostname check (assert_hostname
) options (#3185)assert_hostname
has not been used since Python 3.6 and was removed in 3.12- Python 3.7+ supports TLSv1.3 by default
- Websocket support is no longer included by default (#3123)
- Use
pip install docker[websockets]
to includewebsocket-client
dependency - By default,
docker-py
hijacks the TCP connection and does not use Websockets - Websocket client is only required to use
attach_socket(container, ws=True)
- Use
- Python 3.7 no longer supported (reached end-of-life June 2023) (#3187)
Features ✨
- Python 3.12 support (#3185)
- Full
networking_config
support forcontainers.create()
(#3121)- Replaces
network_driver_opt
(added in 6.1.0)
- Replaces
- Add
health()
property to container that returns status (e.g.unhealthy
) (#3147) - Add
pause
option tocontainer.commit()
(#3159) - Add support for bind mount propagation (e.g.
rshared
,private
) (#3164) - Add support for
filters
,keep_storage
, andall
inprune_builds()
on API v1.39+ (#3192)
Bugfixes 🐛
- Consistently return
docker.errors.NotFound
on 404 responses (#3156) - Validate tag format before push (#3191)
Miscellaneous 🔧
- Upgraded urllib3 version in
requirements.txt
(used for development/tests) (#3183) - Documentation typo fixes & formatting improvements (#3130)
- Fixed integration test compatibility for newer Moby engine versions (#3165, #3166, #3145, #3169, #3170)
- Switch to ruff for linting (#3126)
What's Changed
- fix user_guides/multiplex.rst by @Longin-Yu in #3130
- tests/integration: fix flake8 failures (E721 do not compare types), and fix Dockerfile for debian "bookworm" by @thaJeztah in #3166
- tests/integration: update some tests for updated error-messages by @thaJeztah in #3165
- README: fix link for CI status badge by @thaJeztah in #3167
- fix: use response.text to get string rather than bytes by @mndeveci in #3156
- feat: add pause option to commit api by @VincentLeeMax in #3159
- build(deps): Bump requests from 2.28.1 to 2.31.0 by @dependabot in #3136
- test: remove APT_MIRROR from Dockerfile by @thaJeztah in #3145
- Switch linting to ruff, use f-strings, fix lint errors and possible bugs by @akx in #3126
- integration: Fix bad subnet declaration by @akerouanton in #3169
- integration: Remove test_create_check_duplicate by @akerouanton in #3170
- Support all
Network.connect
parameters inclient.containers.run
andclient.containers.create
by @Skazza94 in #3121 - feat: move websocket-client to extra dependency by @akx in #3123
- Add health property to Containers model by @TurnrDev in #3147
- build(deps): Bump urllib3 from 1.26.11 to 1.26.18 by @dependabot in #3183
- breaking: Python 3.12 compatibility & remove custom SSL adapter by @milas in #3185
- chore: add changelog for 7.0.0 by @milas in #3186
- chore: remove support for Python 3.7 by @milas in #3187
- chore: update MAINTAINERS and remove CODEOWNERS by @milas in #3188
- chore: fix missing setuptools in CI by @milas in #3189
- Fix #3153 - Validate tag before build using OCI regex by @LombardiDaniel in #3191
- feat: accept filters and keep_storage in prune_builds by @emranbm in #3192
- chore: update changelog and maintainer by @milas in #3193
New Contributors
- @Longin-Yu made their first contribution in #3130
- @mndeveci made their first contribution in #3156
- @VincentLeeMax made their first contribution in #3159
- @akerouanton made their first contribution in #3169
- @TurnrDev made their first contribution in #3147
- @LombardiDaniel made their first contribution in #3191
- @emranbm made their first contribution in #3192
Full Changelog: 6.1.3...7.0.0
7.0.0b3
ℹ️ See 7.0.0b2 for full release notes
Upgrade Notes (from 6.x) ⚠️
- Removed SSL version (
ssl_version
) and explicit hostname check (assert_hostname
) options (#3185)assert_hostname
has not been used since Python 3.6 and was removed in 3.12- Python 3.7+ supports TLSv1.3 by default
- Websocket support is no longer included by default (#3123)
- Use
pip install docker[websockets]
to includewebsocket-client
dependency - By default,
docker-py
hijacks the TCP connection and does not use Websockets - Websocket client is only required to use
attach_socket(container, ws=True)
- Use
- Python 3.7 no longer supported (reached end-of-life June 2023) (#3187)
Features ✨
- Add support for
filters
,keep_storage
, andall
inprune_builds()
on API v1.39+ (#3192)
Bugfixes 🐛
- Validate tag format before push (#3191)
Full Changelog
- Fix #3153 - Validate tag before build using OCI regex by @LombardiDaniel in #3191
- feat: accept filters and keep_storage in prune_builds by @emranbm in #3192
Commit Log: 7.0.0b2...7.0.0b3
New Contributors
- @LombardiDaniel made their first contribution in #3191
- @emranbm made their first contribution in #3192
7.0.0b2
ℹ️ This is identical to 7.0.0b1
, which was not correctly released due to a CI pipeline issue.
Upgrade Notes ⚠️
- Removed SSL version (
ssl_version
) and explicit hostname check (assert_hostname
) options (#3185)assert_hostname
has not been used since Python 3.6 and was removed in 3.12- Python 3.7+ supports TLSv1.3 by default
- Websocket support is no longer included by default (#3123)
- Use
pip install docker[websockets]
to includewebsocket-client
dependency - By default,
docker-py
hijacks the TCP connection and does not use Websockets - Websocket client is only required to use
attach_socket(container, ws=True)
- Use
- Python 3.7 no longer supported (reached end-of-life June 2023) (#3187)
Features ✨
- Python 3.12 support (#3185)
- Full
networking_config
support forcontainers.create()
(#3121)- Replaces
network_driver_opt
(added in 6.1.0)
- Replaces
- Add
health()
property to container that returns status (e.g.unhealthy
) (#3147) - Add
pause
option tocontainer.commit()
(#3159) - Add support for bind mount propagation (e.g.
rshared
,private
) (#3164)
Bugfixes 🐛
- Consistently return
docker.errors.NotFound
on 404 responses (#3156)
Miscellaneous 🔧
- Upgraded urllib3 version in
requirements.txt
(used for development/tests) (#3183) - Documentation typo fixes & formatting improvements (#3130)
- Fixed integration test compatibility for newer Moby engine versions (#3165, #3166, #3145, #3169, #3170)
- Switch to ruff for linting (#3126)
Full Changelog
- fix user_guides/multiplex.rst by @Longin-Yu in #3130
- tests/integration: fix flake8 failures (E721 do not compare types), and fix Dockerfile for debian "bookworm" by @thaJeztah in #3166
- tests/integration: update some tests for updated error-messages by @thaJeztah in #3165
- README: fix link for CI status badge by @thaJeztah in #3167
- fix: use response.text to get string rather than bytes by @mndeveci in #3156
- feat: add pause option to commit api by @VincentLeeMax in #3159
- build(deps): Bump requests from 2.28.1 to 2.31.0 by @dependabot in #3136
- test: remove APT_MIRROR from Dockerfile by @thaJeztah in #3145
- Switch linting to ruff, use f-strings, fix lint errors and possible bugs by @akx in #3126
- integration: Fix bad subnet declaration by @akerouanton in #3169
- integration: Remove test_create_check_duplicate by @akerouanton in #3170
- Support all
Network.connect
parameters inclient.containers.run
andclient.containers.create
by @Skazza94 in #3121 - feat: move websocket-client to extra dependency by @akx in #3123
- Add health property to Containers model by @TurnrDev in #3147
- build(deps): Bump urllib3 from 1.26.11 to 1.26.18 by @dependabot in #3183
- breaking: Python 3.12 compatibility & remove custom SSL adapter by @milas in #3185
- chore: add changelog for 7.0.0 by @milas in #3186
- chore: remove support for Python 3.7 by @milas in #3187
- chore: update MAINTAINERS and remove CODEOWNERS by @milas in #3188
New Contributors
- @Longin-Yu made their first contribution in #3130
- @mndeveci made their first contribution in #3156
- @VincentLeeMax made their first contribution in #3159
- @akerouanton made their first contribution in #3169
- @TurnrDev made their first contribution in #3147
Full Changelog: 6.1.3...7.0.0b2
7.0.0b1
Upgrade Notes ⚠️
- Removed SSL version (
ssl_version
) and explicit hostname check (assert_hostname
) options (#3185)assert_hostname
has not been used since Python 3.6 and was removed in 3.12- Python 3.7+ supports TLSv1.3 by default
- Websocket support is no longer included by default (#3123)
- Use
pip install docker[websockets]
to includewebsocket-client
dependency - By default,
docker-py
hijacks the TCP connection and does not use Websockets - Websocket client is only required to use
attach_socket(container, ws=True)
- Use
- Python 3.7 no longer supported (reached end-of-life June 2023) (#3187)
Features ✨
- Python 3.12 support (#3185)
- Full
networking_config
support forcontainers.create()
(#3121)- Replaces
network_driver_opt
(added in 6.1.0)
- Replaces
- Add
health()
property to container that returns status (e.g.unhealthy
) (#3147) - Add
pause
option tocontainer.commit()
(#3159) - Add support for bind mount propagation (e.g.
rshared
,private
) (#3164)
Bugfixes 🐛
- Consistently return
docker.errors.NotFound
on 404 responses (#3156)
Miscellaneous 🔧
- Upgraded urllib3 version in
requirements.txt
(used for development/tests) (#3183) - Documentation typo fixes & formatting improvements (#3130)
- Fixed integration test compatibility for newer Moby engine versions (#3165, #3166, #3145, #3169, #3170)
- Switch to ruff for linting (#3126)
Full Changelog
- fix user_guides/multiplex.rst by @Longin-Yu in #3130
- tests/integration: fix flake8 failures (E721 do not compare types), and fix Dockerfile for debian "bookworm" by @thaJeztah in #3166
- tests/integration: update some tests for updated error-messages by @thaJeztah in #3165
- README: fix link for CI status badge by @thaJeztah in #3167
- fix: use response.text to get string rather than bytes by @mndeveci in #3156
- feat: add pause option to commit api by @VincentLeeMax in #3159
- build(deps): Bump requests from 2.28.1 to 2.31.0 by @dependabot in #3136
- test: remove APT_MIRROR from Dockerfile by @thaJeztah in #3145
- Switch linting to ruff, use f-strings, fix lint errors and possible bugs by @akx in #3126
- integration: Fix bad subnet declaration by @akerouanton in #3169
- integration: Remove test_create_check_duplicate by @akerouanton in #3170
- Support all
Network.connect
parameters inclient.containers.run
andclient.containers.create
by @Skazza94 in #3121 - feat: move websocket-client to extra dependency by @akx in #3123
- Add health property to Containers model by @TurnrDev in #3147
- build(deps): Bump urllib3 from 1.26.11 to 1.26.18 by @dependabot in #3183
- breaking: Python 3.12 compatibility & remove custom SSL adapter by @milas in #3185
- chore: add changelog for 7.0.0 by @milas in #3186
- chore: remove support for Python 3.7 by @milas in #3187
- chore: update MAINTAINERS and remove CODEOWNERS by @milas in #3188
New Contributors
- @Longin-Yu made their first contribution in #3130
- @mndeveci made their first contribution in #3156
- @VincentLeeMax made their first contribution in #3159
- @akerouanton made their first contribution in #3169
- @TurnrDev made their first contribution in #3147
Full Changelog: 6.1.3...7.0.0b1
6.1.3
6.1.2
🐛 Bugfixes
Full Changelog
- Use windows api to honour timeouts (fixes #3111) by @ImogenBits in #3112
- Avoid socket timeouts when executing commands by @loicleyendecker in #3125
- docs: update changelog by @milas in #3127
New Contributors
- @ImogenBits made their first contribution in #3112
Full Changelog: 6.1.1...6.1.2
6.1.1
ℹ️ Upgrade Notes (6.1.x)
- Errors are no longer returned during client initialization if the credential helper cannot be found. A warning will be emitted instead, and an error is returned if the credential helper is used.
🐛 Bugfixes
- Fix
containers.stats()
hanging withstream=True
- Correct return type in docs for
containers.diff()
method
What's Changed
- api: update return type of
diff
method by @john-b-yang in #3115 - Fix container.stats infinite blocking on stream mode by @RazCrimson in #3120
New Contributors
- @john-b-yang made their first contribution in #3115
- @RazCrimson made their first contribution in #3120
Full Changelog: 6.1.0...6.1.1
6.1.0
ℹ️ Upgrade Notes
- Errors are no longer returned during client initialization if the credential helper cannot be found. A warning will be emitted instead, and an error is returned if the credential helper is used.
✨ Features
- Python 3.11 support
- Use
poll()
instead ofselect()
on non-Windows platforms - New API fields
network_driver_opt
on container run / createone-shot
on container statsstatus
on services list
🐛 Bugfixes
- Support for requests 2.29.0+ and urllib3 2.x
- Do not strip characters from volume names
- Fix connection leak on
container.exec_*
operations - Fix errors closing named pipes on Windows
What's Changed
- Add support for Python 3.11 by @hugovk in #3064
- Avoid stripping characters in volume names by @loicleyendecker in #3073
- docs: fix wrong command syntax in code annotation by @serieznyi in #3081
- build(deps): Bump setuptools from 63.2.0 to 65.5.1 by @dependabot in #3082
- fix(store): warn on init instead of throw by @nomagick in #3080
- exec: fix file handle leak with container.exec_* APIs by @Lekensteyn in #2320
- Add
network_driver_opt
to client.containers run and create by @Skazza94 in #3083 - Add
one-shot
to container APIstats
by @aroxby-wayscript in #3089 - Add
status
parameter to services list API by @lorinbucher in #3093 - socket: fix for errors on pipe close in Windows by @milas in #3099
- put_archive: note the data may also be a stream by @akx in #2478
- Use poll() instead of select(), unless Windows. by @I-question-this in #2865
- Make compatible with requests 2.29.0 and urllib3 2.0 by @felixfontein in #3116
New Contributors
- @loicleyendecker made their first contribution in #3073
- @serieznyi made their first contribution in #3081
- @nomagick made their first contribution in #3080
- @Lekensteyn made their first contribution in #2320
- @aroxby-wayscript made their first contribution in #3089
- @lorinbucher made their first contribution in #3093
- @akx made their first contribution in #2478
- @I-question-this made their first contribution in #2865
Full Changelog: 6.0.1...6.1.0
6.0.1
⚠️ Notice
This version is not compatible with requests
2.29+ or urllib3
2.x.
Either add requests < 2.29
and urllib3 < 2
to your requirements or upgrade to to the latest docker-py
release.
🐛 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 #3032
- Use latest stable syntax for Dockerfiles by @thaJeztah in #3035
- feat: add support for floats to docker logs params since / until sinc… by @ArchiMoebius in #3031
- Change prune test to use anonymous volumes by @cpuguy83 in #3051
- socket: handle npipe close by @nicks in #3056
New Contributors
- @ArchiMoebius made their first contribution in #3031
- @nicks made their first contribution in #3056
Full Changelog: 6.0.0...6.0.1
6.0.0
ℹ️ Upgrade Notes
- Minimum supported Python version is 3.7+
- When installing with pip, the
docker[tls]
extra is deprecated and a no-op,
usedocker
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 withparamiko.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
andReplicatedJobs
for Swarm - Add
remove()
method onImage
- Add
force
param todisable()
onPlugin
🐛 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 #2897
- Add support for Python 3.10 by @hugovk in #2898
- Bump paramiko from 2.8.0 to 2.10.1 by @dependabot in #2974
- deps: upgrade pywin32 & relax version constraint by @milas in #3004
- ci: remove Python 3.6 and add 3.11 pre-releases by @milas in #3005
- utils: fix IPv6 address w/ port parsing by @milas in #3006
- test_create_with_device_cgroup_rules: don't check devices.list by @thaJeztah in #2940
- Fix exception semantics in _raise_for_status by @kmaork in #2954
- tls: use auto-negotiated highest version by @milas in #3007
- sshcon: remove use of self.ssh_conf by @glicht in #2993
- Use
packaging
instead ofdistutils
forVersion
by @FrancescoCasalegno in #2931 - test: fix a couple flaky/broken tests by @milas in #3008
- ci: add flake8 job by @milas in #3009
- Fixes and improvements by @kinday in #2947
- deps: test on Python 3.10 by default by @milas in #3010
- deps: remove backports.ssl_match_hostname by @milas in #3011
- Fix: fix CVE-2020-28243 by @errorcode7 in #2910
- Fix for CWE-295: Improper Certificate Validation by @avnes in #2932
- Set daemon attribute instead of using setDaemon method that was deprecated in Python 3.10 by @tirkarthi in #2823
- Remove unnecessary pass statements by @vilhelmprytz in #2541
- ci: run SSH integration tests by @milas in #3012
- docs: fix simple typo, containe -> container by @timgates42 in #3015
- ci: bump version to 6.0.0-dev by @milas in #3013
- deps: upgrade & remove unnecessary dependencies by @milas in #3014
- lint: fix line length violation by @milas in #3017
- docs: fix markdown rendering by @milas in #3020
- Return 12 character short_ids by @benfasoli in #2862
- api: preserve cause when re-raising error by @milas in #3023
- deps: upgrade websocket-client to latest by @milas in #3022
- Add platform parameter for create_container() by @felixfontein in #2927
- Support cgroupns option in containers.run/containers.create by @david0 in #2930
- Prevent pip cache in Docker image to save image size by @PeterDaveHello in #2828
- Update: allow "force" parameter in plugin.disable() by @till in #2843
- Fix: Issue #2832 Allowing Rollback Config Arg for Services by @ercildoune in #2917
- model: add remove() to Image by @milas in #3026
- fix(dockerignore): trim trailing whitespace by @kalioz in #2733
- Fix TLS server check example to actually verify by @scop in #2574
- Clarify TLSConfig verify parameter docs by @scop in #2573
- Add healthcheck doc for container.run by @JanoschDeurer in #2595
- Fix image save example by @hristog in #2570
- Changed a few words to be more clear by @InnovativeInventor in #2489
- docs: fix RollbackConfig/Order values by @milas in #3027
- ci: add workflow for releases by @milas in #3018
- remove duplicate 'on' in comment by @thomasgassmann in #2370
- Add
gzip
documentation toBuildApiMixin
by @SauravMaheshkar in #2929 - Use
preexec_func
always by @q0w in #2920 - Remove docker.credentials.utils.find_executable by @n1ngu in #3028
- Support
global-job
andreplicated-job
modes in Docker Swarm by @kinday in #3016 - docs: add changelog for 6.0.0 by @milas in #3019
- Add sysctl support for docker swarm services by @Aadenei in #3029
- Connect with mac address by @YuviGold in #2481
- docs/css: remove hyphens in literals by @jrabbit in #2452
- Add swarm support for DataPathPort by @dexteradeus in #2987
- test: add additional tests for cgroupns option by @milas in #3024
New Contributors
- @hugovk made their first contribution in #2898
- @milas made their first contribution in #3004
- @kmaork made their first contribution in #2954
- @glicht made their first contribution in #2993
- @FrancescoCasalegno made their first contribution in #2931
- @kinday made their first contribution in #2947
- @errorcode7 made their first contribution in #2910
- @avnes made their first contribution in #2932
- @tirkarthi made their first contribution in #2823
- @vilhelmprytz made their first contribution in #2541
- @timgates42 made their first contribution in #3015
- @benfasoli made their first contribution in #2862
- @felixfontein made their first contribution in #2927
- @david0 made their first contribution in #2930
- @PeterDaveHello made their first contribution in #2828
- @till made their first contribution in #2843
- @ercildoune made their first contribution in #2917
- @kalioz made their first contribution in #2733
- @JanoschDeurer made their first contribution in #2595
- @hristog made their first contribution in #2570
- @InnovativeInventor made their first contribution in #2489
- @thomasgassmann made their first contribution in #2370
- @SauravMaheshkar made their first contribution in #2929
- @q0w made their first contribution in #2920
- @n1ngu made their first contribution in #3028
- @Aadenei made their first contribution in #3029
- @jrabbit made their first contribution in #2452
- @dexteradeus made their first contribution in #2...