Docker Engine release notes

This document describes the latest changes, additions, known issues, and fixes for Docker Engine.

Version 20.10

20.10.18

2022-09-09

This release of Docker Engine comes with a fix for a low-severity security issue, some minor bug fixes, and updated versions of Docker Compose, Docker Buildx, containerd, and runc.

Client

Builder

  • Fix an issue where file-capabilities were not preserved during build moby/moby#43876.
  • Fix an issue that could result in a panic caused by a concurrent map read and map write moby/moby#44067.

Daemon

  • Fix a security vulnerability relating to supplementary group permissions, which could allow a container process to bypass primary group restrictions within the container CVE-2022-36109, GHSA-rc4r-wh2q-q6c4.
  • seccomp: add support for Landlock syscalls in default policy moby/moby#43991.
  • seccomp: update default policy to support new syscalls introduced in kernel 5.12 - 5.16 moby/moby#43991.
  • Fix an issue where cache lookup for image manifests would fail, resulting in a redundant round-trip to the image registry moby/moby#44109.
  • Fix an issue where exec processes and healthchecks were not terminated when they timed out moby/moby#44018.

Packaging

20.10.17

2022-06-06

This release of Docker Engine comes with updated versions of Docker Compose and the containerd, and runc components, as well as some minor bug fixes.

Client

  • Remove asterisk from docker commands in zsh completion script docker/cli#3648.

Networking

  • Fix Windows port conflict with published ports in host mode for overlay moby/moby#43644.
  • Ensure performance tuning is always applied to libnetwork sandboxes moby/moby#43683.

Packaging

20.10.16

2022-05-12

This release of Docker Engine fixes a regression in the Docker CLI builds for macOS, fixes an issue with docker stats when using containerd 1.5 and up, and updates the Go runtime to include a fix for CVE-2022-29526.

Client

Daemon

  • Fixed an issue where docker stats was showing empty stats when running with containerd 1.5.0 or up moby/moby#43567.
  • Updated the golang.org/x/sys build-time dependency which contains a fix for CVE-2022-29526.

Packaging

  • Updated Go runtime to 1.17.10, which contains a fix for CVE-2022-29526.
  • Used “weak” dependencies for the docker scan CLI plugin, to prevent a “conflicting requests” error when users performed an off-line installation from downloaded RPM packages docker/docker-ce-packaging#659.

20.10.15

2022-05-05

This release of Docker Engine comes with updated versions of the compose, buildx, containerd, and runc components, as well as some minor bug fixes.

Known issues

We’ve identified an issue with the macOS CLI binaries in the 20.10.15 release. This issue has been resolved in the 20.10.16 release.

Daemon

  • Use a RWMutex for stateCounter to prevent potential locking congestion moby/moby#43426.
  • Prevent an issue where the daemon was unable to find an available IP-range in some conditions moby/moby#43360

Packaging

  • Update Docker Compose to v2.5.0.
  • Update Docker Buildx to v0.8.2.
  • Update Go runtime to 1.17.9.
  • Update containerd (containerd.io package) to v1.6.4.
  • Update runc version to v1.1.1.
  • Add packages for CentOS 9 stream and Fedora 36.

20.10.14

2022-03-23

This release of Docker Engine updates the default inheritable capabilities for containers to address CVE-2022-24769, a new version of the containerd.io runtime is also included to address the same issue.

Daemon

  • Update the default inheritable capabilities.

Builder

  • Update the default inheritable capabilities for containers used during build.

Packaging

  • Update containerd (containerd.io package) to v1.5.11.
  • Update docker buildx to v0.8.1.

20.10.13

2022-03-10

This release of Docker Engine contains some bug-fixes and packaging changes, updates to the docker scan and docker buildx commands, an updated version of the Go runtime, and new versions of the containerd.io runtime. Together with this release, we now also provide .deb and .rpm packages of Docker Compose V2, which can be installed using the (optional) docker-compose-plugin package.

Builder

  • Updated the bundled version of buildx to v0.8.0.

Daemon

  • Fix a race condition when updating the container’s state moby/moby#43166.
  • Update the etcd dependency to prevent the daemon from incorrectly holding file locks moby/moby#43259
  • Fix detection of user-namespaces when configuring the default net.ipv4.ping_group_range sysctl moby/moby#43084.

Distribution

  • Retry downloading image-manifests if a connection failure happens during image pull moby/moby#43333.

Documentation

  • Various fixes in command-line reference and API documentation.

Logging

  • Prevent an OOM when using the “local” logging driver with containers that produce a large amount of log messages moby/moby#43165.
  • Updates the fluentd log driver to prevent a potential daemon crash, and prevent containers from hanging when using the fluentd-async-connect=true and the remote server is unreachable moby/moby#43147.

Packaging

  • Provide .deb and .rpm packages for Docker Compose V2. Docker Compose v2.3.3 can now be installed on Linux using the docker-compose-plugin packages, which provides the docker compose subcommand on the Docker CLI. The Docker Compose plugin can also be installed and run standalone to be used as a drop-in replacement for docker-compose (Docker Compose V1) docker/docker-ce-packaging#638. The compose-cli-plugin package can also be used on older version of the Docker CLI with support for CLI plugins (Docker CLI 18.09 and up).
  • Provide packages for the upcoming Ubuntu 22.04 “Jammy Jellyfish” LTS release docker/docker-ce-packaging#645, docker/containerd-packaging#271.
  • Update docker buildx to v0.8.0.
  • Update docker scan (docker-scan-plugin) to v0.17.0.
  • Update containerd (containerd.io package) to v1.5.10.
  • Update the bundled runc version to v1.0.3.
  • Update Golang runtime to Go 1.16.15.

20.10.12

2021-12-13

This release of Docker Engine contains changes in packaging only, and provides updates to the docker scan and docker buildx commands. Versions of docker scan before v0.11.0 are not able to detect the Log4j 2 CVE-2021-44228. We are shipping an updated version of docker scan in this release to help you scan your images for this vulnerability.

Note

The docker scan command on Linux is currently only supported on x86 platforms. We do not yet provide a package for other hardware architectures on Linux.

The docker scan feature is provided as a separate package and, depending on your upgrade or installation method, ‘docker scan’ may not be updated automatically to the latest version. Use the instructions below to update docker scan to the latest version. You can also use these instructions to install, or upgrade the docker scan package without upgrading the Docker Engine:

On .deb based distros, such as Ubuntu and Debian:

$ apt-get update && apt-get install docker-scan-plugin

On rpm-based distros, such as CentOS or Fedora:

$ yum install docker-scan-plugin

After upgrading, verify you have the latest version of docker scan installed:

$ docker scan --accept-license --version
Version:    v0.12.0
Git commit: 1074dd0
Provider:   Snyk (1.790.0 (standalone))

Read our blog post on CVE-2021-44228 to learn how to use the docker scan command to check if images are vulnerable.

Packaging

  • Update docker scan to v0.12.0.
  • Update docker buildx to v0.7.1.
  • Update Golang runtime to Go 1.16.12.

20.10.11

2021-11-17

IMPORTANT

Due to net/http changes in Go 1.16, HTTP proxies configured through the $HTTP_PROXY environment variable are no longer used for TLS (https://) connections. Make sure you also set an $HTTPS_PROXY environment variable for handling requests to https:// URLs.

Refer to the HTTP/HTTPS proxy section to learn how to configure the Docker Daemon to use a proxy server.

Distribution

Windows

Packaging

20.10.10

2021-10-25

IMPORTANT

Due to net/http changes in Go 1.16, HTTP proxies configured through the $HTTP_PROXY environment variable are no longer used for TLS (https://) connections. Make sure you also set an $HTTPS_PROXY environment variable for handling requests to https:// URLs.

Refer to the HTTP/HTTPS proxy section to learn how to configure the Docker Daemon to use a proxy server.

Builder

  • Fix platform-matching logic to fix docker build using not finding images in the local image cache on Arm machines when using BuildKit moby/moby#42954

Runtime

  • Add support for clone3 syscall in the default seccomp policy to support running containers based on recent versions of Fedora and Ubuntu. moby/moby/#42836.
  • Windows: update hcsshim library to fix a bug in sparse file handling in container layers, which was exposed by recent changes in Windows moby/moby#42944.
  • Fix some situations where docker stop could hang forever moby/moby#42956.

Swarm

  • Fix an issue where updating a service did not roll back on failure moby/moby#42875.

Packaging

  • Add packages for Ubuntu 21.10 “Impish Indri” and Fedora 35.
  • Update docker scan to v0.9.0
  • Update Golang runtime to Go 1.16.9.

20.10.9

2021-10-04

This release is a security release with security fixes in the CLI, runtime, as well as updated versions of the containerd.io package.

IMPORTANT

Due to net/http changes in Go 1.16, HTTP proxies configured through the $HTTP_PROXY environment variable are no longer used for TLS (https://) connections. Make sure you also set an $HTTPS_PROXY environment variable for handling requests to https:// URLs.

Refer to the HTTP/HTTPS proxy section to learn how to configure the Docker Daemon to use a proxy server.

Client

  • CVE-2021-41092 Ensure default auth config has address field set, to prevent credentials being sent to the default registry.

Runtime

  • CVE-2021-41089 Create parent directories inside a chroot during docker cp to prevent a specially crafted container from changing permissions of existing files in the host’s filesystem.
  • CVE-2021-41091 Lock down file permissions to prevent unprivileged users from discovering and executing programs in /var/lib/docker.

Packaging

Known issue

The ctr binary shipping with the static packages of this release is not statically linked, and will not run in Docker images using alpine as a base image. Users can install the libc6-compat package, or download a previous version of the ctr binary as a workaround. Refer to the containerd ticket related to this issue for more details: containerd/containerd#5824.

  • Update Golang runtime to Go 1.16.8, which contains fixes for CVE-2021-36221 and CVE-2021-39293
  • Update static binaries and containerd.io rpm and deb packages to containerd v1.4.11 and runc v1.0.2 to address CVE-2021-41103.
  • Update the bundled buildx version to v0.6.3 for rpm and deb packages.

20.10.8

2021-08-03

IMPORTANT

Due to net/http changes in Go 1.16, HTTP proxies configured through the $HTTP_PROXY environment variable are no longer used for TLS (https://) connections. Make sure you also set an $HTTPS_PROXY environment variable for handling requests to https:// URLs.

Refer to the HTTP/HTTPS proxy section to learn how to configure the Docker Daemon to use a proxy server.

Deprecation

  • Deprecate support for encrypted TLS private keys. Legacy PEM encryption as specified in RFC 1423 is insecure by design. Because it does not authenticate the ciphertext, it is vulnerable to padding oracle attacks that can let an attacker recover the plaintext. Support for encrypted TLS private keys is now marked as deprecated, and will be removed in an upcoming release. docker/cli#3219
  • Deprecate Kubernetes stack support. Following the deprecation of Compose on Kubernetes, support for Kubernetes in the stack and context commands in the Docker CLI is now marked as deprecated, and will be removed in an upcoming release docker/cli#3174.

Client

  • Fix Invalid standard handle identifier errors on Windows docker/cli#3132.

Rootless

  • Avoid can't open lock file /run/xtables.lock: Permission denied error on SELinux hosts moby/moby#42462.
  • Disable overlay2 when running with SELinux to prevent permission denied errors moby/moby#42462.
  • Fix x509: certificate signed by unknown authority error on openSUSE Tumbleweed moby/moby#42462.

Runtime

  • Print a warning when using the --platform option to pull a single-arch image that does not match the specified architecture moby/moby#42633.
  • Fix incorrect Your kernel does not support swap memory limit warning when running with cgroups v2 moby/moby#42479.
  • Windows: Fix a situation where containers were not stopped if HcsShutdownComputeSystem returned an ERROR_PROC_NOT_FOUND error moby/moby#42613

Swarm

  • Fix a possibility where overlapping IP addresses could exist as a result of the node failing to clean up its old loadbalancer IPs moby/moby#42538
  • Fix a deadlock in log broker (“dispatcher is stopped”) moby/moby#42537

Packaging

Known issue

The ctr binary shipping with the static packages of this release is not statically linked, and will not run in Docker images using alpine as a base image. Users can install the libc6-compat package, or download a previous version of the ctr binary as a workaround. Refer to the containerd ticket related to this issue for more details: containerd/containerd#5824.

20.10.7

2021-06-02

Client

  • Suppress warnings for deprecated cgroups docker/cli#3099.
  • Prevent sending SIGURG signals to container on Linux and macOS. The Go runtime (starting with Go 1.14) uses SIGURG signals internally as an interrupt to support preemptable syscalls. In situations where the Docker CLI was attached to a container, these interrupts were forwarded to the container. This fix changes the Docker CLI to ignore SIGURG signals docker/cli#3107, moby/moby#42421.

Builder

  • Update BuildKit to version v0.8.3-3-g244e8cde moby/moby#42448:
    • Transform relative mountpoints for exec mounts in the executor to work around a breaking change in runc v1.0.0-rc94 and up. moby/buildkit#2137.
    • Add retry on image push 5xx errors. moby/buildkit#2043.
    • Fix build-cache not being invalidated when renaming a file that is copied using a COPY command with a wildcard. Note that this change invalidates existing build caches for copy commands that use a wildcard. moby/buildkit#2018.
    • Fix build-cache not being invalidated when using mounts moby/buildkit#2076.
  • Fix build failures when FROM image is not cached when using legacy schema 1 images moby/moby#42382.

Logging

  • Update the hcsshim SDK to make daemon logs on Windows less verbose moby/moby#42292.

Rootless

  • Fix capabilities not being honored when an image was built on a daemon with user-namespaces enabled moby/moby#42352.

Networking

  • Update libnetwork to fix publishing ports on environments with kernel boot parameter ipv6.disable=1, and to fix a deadlock causing internal DNS lookups to fail moby/moby#42413.

Contrib

  • Update rootlesskit to v0.14.2 to fix a timeout when starting the userland proxy with the slirp4netns port driver moby/moby#42294.
  • Fix “Device or resource busy” errors when running docker-in-docker on a rootless daemon moby/moby#42342.

Packaging

20.10.6

2021-04-12

Client

  • Apple Silicon (darwin/arm64) support for Docker CLI docker/cli#3042
  • config: print deprecation warning when falling back to pre-v1.7.0 config file ~/.dockercfg. Support for this file will be removed in a future release docker/cli#3000

Builder

  • Fix classic builder silently ignoring unsupported Dockerfile options and prompt to enable BuildKit instead moby/moby#42197

Logging

Networking

  • Fix a regression in docker 20.10, causing IPv6 addresses no longer to be bound by default when mapping ports moby/moby#42205
  • Fix implicit IPv6 port-mappings not included in API response. Before docker 20.10, published ports were accessible through both IPv4 and IPv6 by default, but the API only included information about the IPv4 (0.0.0.0) mapping moby/moby#42205
  • Fix a regression in docker 20.10, causing the docker-proxy to not be terminated in all cases moby/moby#42205
  • Fix iptables forwarding rules not being cleaned up upon container removal moby/moby#42205

Packaging

Plugins

  • Fix docker plugin create making plugins that were incompatible with older versions of Docker moby/moby#42256

Rootless

20.10.5

2021-03-02

Client

20.10.4

2021-02-26

Builder

  • Fix incorrect cache match for inline cache import with empty layers moby/moby#42061
  • Update BuildKit to v0.8.2 moby/moby#42061
    • resolver: avoid error caching on token fetch
    • fileop: fix checksum to contain indexes of inputs preventing certain cache misses
    • Fix reference count issues on typed errors with mount references (fixing invalid mutable ref errors)
    • git: set token only for main remote access allowing cloning submodules with different credentials
  • Ensure blobs get deleted in /var/lib/docker/buildkit/content/blobs/sha256 after pull. To clean up old state run builder prune moby/moby#42065
  • Fix parallel pull synchronization regression moby/moby#42049
  • Ensure libnetwork state files do not leak moby/moby#41972

Client

  • Fix a panic on docker login if no config file is present docker/cli#2959
  • Fix WARNING: Error loading config file: .dockercfg: $HOME is not defined docker/cli#2958

Runtime

Logger

  • Honor labels-regex config even if labels is not set moby/moby#42046
  • Handle long log messages correctly preventing awslogs in non-blocking mode to split events bigger than 16kB mobymoby#41975

Rootless

Security

Swarm

  • Fix issue with heartbeat not persisting upon restart moby/moby#42060
  • Fix potential stalled tasks moby/moby#42060
  • Fix --update-order and --rollback-order flags when only --update-order or --rollback-order is provided docker/cli#2963
  • Fix docker service rollback returning a non-zero exit code in some situations docker/cli#2964
  • Fix inconsistent progress-bar direction on docker service rollback docker/cli#2964

20.10.3

2021-02-01

Security

  • CVE-2021-21285 Prevent an invalid image from crashing docker daemon
  • CVE-2021-21284 Lock down file permissions to prevent remapped root from accessing docker state
  • Ensure AppArmor and SELinux profiles are applied when building with BuildKit

Client

  • Check contexts before importing them to reduce risk of extracted files escaping context store
  • Windows: prevent executing certain binaries from current directory docker/cli#2950

20.10.2

2021-01-04

Runtime

  • Fix a daemon start up hang when restoring containers with restart policies but that keep failing to start moby/moby#41729
  • overlay2: fix an off-by-one error preventing to build or run containers when data-root is 24-bytes long moby/moby#41830
  • systemd: send sd_notify STOPPING=1 when shutting down moby/moby#41832

Networking

Swarm

  • Fix filtering for replicated-job and global-job service modes moby/moby#41806

Packaging

20.10.1

2020-12-14

Builder

Packaging

20.10.0

2020-12-08

Deprecation / Removal

For an overview of all deprecated features, refer to the Deprecated Engine Features page.

API

  • Update API version to v1.41
  • Do not require “experimental” for metrics API moby/moby#40427
  • GET /events now returns prune events after pruning resources have completed moby/moby#41259
    • Prune events are returned for container, network, volume, image, and builder, and have a reclaimed attribute, indicating the amount of space reclaimed (in bytes)
  • Add one-shot stats option to not prime the stats moby/moby#40478
  • Adding OS version info to the system info’s API (/info) moby/moby#38349
  • Add DefaultAddressPools to docker info moby/moby#40714
  • Add API support for PidsLimit on services moby/moby#39882

Builder

  • buildkit,dockerfile: Support for RUN --mount options without needing to specify experimental dockerfile #syntax directive. moby/buildkit#1717
  • dockerfile: ARG command now supports defining multiple build args on the same line similarly to ENV moby/buildkit#1692
  • dockerfile: --chown flag in ADD now allows parameter expansion moby/buildkit#1473
  • buildkit: Fetching authorization tokens has been moved to client-side (if the client supports it). Passwords do not leak into the build daemon anymore and users can see from build output when credentials or tokens are accessed. moby/buildkit#1660
  • buildkit: Connection errors while communicating with the registry for push and pull now trigger a retry moby/buildkit#1791
  • buildkit: Git source now supports token authentication via build secrets moby/moby#41234 docker/cli#2656 moby/buildkit#1533
  • buildkit: Building from git source now supports forwarding SSH socket for authentication moby/buildkit#1782
  • buildkit: Avoid builds that generate excessive logs to cause a crash or slow down the build. Clipping is performed if needed. moby/buildkit#1754
  • buildkit: Change default Seccomp profile to the one provided by Docker moby/buildkit#1807
  • buildkit: Support for exposing SSH agent socket on Windows has been improved moby/buildkit#1695
  • buildkit: Disable truncating by default when using --progress=plain moby/buildkit#1435
  • buildkit: Allow better handling client sessions dropping while it is being shared by multiple builds moby/buildkit#1551
  • buildkit: secrets: allow providing secrets with env moby/moby#41234 docker/cli#2656 moby/buildkit#1534
    • Support --secret id=foo,env=MY_ENV as an alternative for storing a secret value to a file.
    • --secret id=GIT_AUTH_TOKEN will load env if it exists and the file does not.
  • buildkit: Support for mirrors fallbacks, insecure TLS and custom TLS config moby/moby#40814
  • buildkit: remotecache: Only visit each item once when walking results moby/moby#41234 moby/buildkit#1577
    • Improves performance and CPU use on bigger graphs
  • buildkit: Check remote when local image platform doesn’t match moby/moby#40629
  • buildkit: image export: Use correct media type when creating new layer blobs moby/moby#41234 moby/buildkit#1541
  • buildkit: progressui: fix logs time formatting moby/moby#41234 docker/cli#2656 moby/buildkit#1549
  • buildkit: mitigate containerd issue on parallel push moby/moby#41234 moby/buildkit#1548
  • buildkit: inline cache: fix handling of duplicate blobs moby/moby#41234 moby/buildkit#1568
    • Fixes https://github.com/moby/buildkit/issues/1388 cache-from working unreliably
    • Fixes https://github.com/moby/moby/issues/41219 Image built from cached layers is missing data
  • Allow ssh:// for remote context URLs moby/moby#40179
  • builder: remove legacy build’s session handling (was experimental) moby/moby#39983

Client

  • Add swarm jobs support to CLI docker/cli#2262
  • Add -a/--all-tags to docker push docker/cli#2220
  • Add support for Kubernetes username/password auth docker/cli#2308
  • Add --pull=missing|always|never to run and create commands docker/cli#1498
  • Add --env-file flag to docker exec for parsing environment variables from a file docker/cli#2602
  • Add shorthand -n for --tail option docker/cli#2646
  • Add log-driver and options to service inspect “pretty” format docker/cli#1950
  • docker run: specify cgroup namespace mode with --cgroupns docker/cli#2024
  • docker manifest rm command to remove manifest list draft from local storage docker/cli#2449
  • Add “context” to “docker version” and “docker info” docker/cli#2500
  • Propagate platform flag to container create API docker/cli#2551
  • The docker ps --format flag now has a .State placeholder to print the container’s state without additional details about uptime and health check docker/cli#2000
  • Add support for docker-compose schema v3.9 docker/cli#2073
  • Add support for docker push --quiet docker/cli#2197
  • Hide flags that are not supported by BuildKit, if BuildKit is enabled docker/cli#2123
  • Update flag description for docker rm -v to clarify the option only removes anonymous (unnamed) volumes docker/cli#2289
  • Improve tasks printing for docker services docker/cli#2341
  • docker info: list CLI plugins alphabetically docker/cli#2236
  • Fix order of processing of --label-add/--label-rm, --container-label-add/--container-label-rm, and --env-add/--env-rm flags on docker service update to allow replacing existing values docker/cli#2668
  • Fix docker rm --force returning a non-zero exit code if one or more containers did not exist docker/cli#2678
  • Improve memory stats display by using total_inactive_file instead of cache docker/cli#2415
  • Mitigate against YAML files that has excessive aliasing docker/cli#2117
  • Allow using advanced syntax when setting a config or secret with only the source field docker/cli#2243
  • Fix reading config files containing username and password auth even if auth is empty docker/cli#2122
  • docker cp: prevent NPE when failing to stat destination docker/cli#2221
  • config: preserve ownership and permissions on configfile docker/cli#2228

Logging

  • Support reading docker logs with all logging drivers (best effort) moby/moby#40543
  • Add splunk-index-acknowledgment log option to work with Splunk HECs with index acknowledgment enabled moby/moby#39987
  • Add partial metadata to journald logs moby/moby#41407
  • Reduce allocations for logfile reader moby/moby#40796
  • Fluentd: add fluentd-async, fluentd-request-ack, and deprecate fluentd-async-connect moby/moby#39086

Runtime

Networking

Packaging

Rootless

Security

  • Fix CVE-2019-14271 loading of nsswitch based config inside chroot under Glibc moby/moby#39612
  • seccomp: Whitelist clock_adjtime. CAP_SYS_TIME is still required for time adjustment moby/moby#40929
  • seccomp: Add openat2 and faccessat2 to default seccomp profile moby/moby#41353
  • seccomp: allow ‘rseq’ syscall in default seccomp profile moby/moby#41158
  • seccomp: allow syscall membarrier moby/moby#40731
  • seccomp: whitelist io-uring related system calls moby/moby#39415
  • Add default sysctls to allow ping sockets and privileged ports with no capabilities moby/moby#41030
  • Fix seccomp profile for clone syscall moby/moby#39308

Swarm

docker, docker engine, ce, whats new, release notes