All Versions
124
Latest Version
Avg Release Cycle
65 days
Latest Release
1226 days ago

Changelog History
Page 4

  • v1.24 Changes

    • 🐳 Split the binary into two: docker (client) and dockerd (daemon) #20639
    • βž• Add before and since filters to docker images --filter #22908
    • βž• Add --limit option to docker search #23107
    • βž• Add --filter option to docker search #22369
    • βž• Add security options to docker info output #21172 #23520
    • βž• Add insecure registries to docker info output #20410
    • 🐳 Extend Docker authorization with TLS user information #21556
    • 🐳 devicemapper: expose Minimum Thin Pool Free Space through docker info #21945
    • 🐳 API now returns a JSON object when an error occurs making it more consistent #22880
    • 🐳 Prevent docker run -i --restart from hanging on exit #22777
    • πŸ›  Fix API/CLI discrepancy on hostname validation #21641
    • πŸ›  Fix discrepancy in the format of sizes in stats from HumanSize to BytesSize #21773
    • 🐳 authz: when request is denied return forbidden exit code (403) #22448
    • 🏁 Windows: fix tty-related displaying issues #23878
  • v1.13.1 Changes

    February 08, 2017

    IMPORTANT: On Linux distributions where devicemapper was the default storage driver, 0️⃣ the overlay2, or overlay is now used by default (if the kernel supports it). πŸ”§ To use devicemapper, you can manually configure the storage driver to use through the --storage-driver daemon option, or by setting "storage-driver" in the daemon.json πŸ”§ configuration file.

    IMPORTANT: In Docker 1.13, the managed plugin api changed, as compared to the experimental version introduced in Docker 1.12. You must uninstall plugins which you installed with Docker 1.12 before upgrading to Docker 1.13. You can uninstall plugins using the docker plugin rm command.

    ⬆️ If you have already upgraded to Docker 1.13 without uninstalling πŸ‘€ previously-installed plugins, you may see this message when the Docker daemon starts:

    Error starting daemon: json: cannot unmarshal string into Go value of type types.PluginEnv
    

    🚚 To manually remove all plugins and resolve this problem, take the following steps:

    🐳 1. Remove plugins.json from: /var/lib/docker/plugins/. 🐳 2. Restart Docker. Verify that the Docker daemon starts with no errors. πŸ”Œ 3. Reinstall your plugins.

    Contrib

    • πŸ— Do not require a custom build of tini #28454
    • ⬆️ Upgrade to Go 1.7.5 #30489
  • v1.13.0 Changes

    January 18, 2017

    IMPORTANT: On Linux distributions where devicemapper was the default storage driver, 0️⃣ the overlay2, or overlay is now used by default (if the kernel supports it). πŸ”§ To use devicemapper, you can manually configure the storage driver to use through the --storage-driver daemon option, or by setting "storage-driver" in the daemon.json πŸ”§ configuration file.

    IMPORTANT: In Docker 1.13, the managed plugin api changed, as compared to the experimental version introduced in Docker 1.12. You must uninstall plugins which you installed with Docker 1.12 before upgrading to Docker 1.13. You can uninstall plugins using the docker plugin rm command.

    ⬆️ If you have already upgraded to Docker 1.13 without uninstalling πŸ‘€ previously-installed plugins, you may see this message when the Docker daemon starts:

    Error starting daemon: json: cannot unmarshal string into Go value of type types.PluginEnv
    

    🚚 To manually remove all plugins and resolve this problem, take the following steps:

    🐳 1. Remove plugins.json from: /var/lib/docker/plugins/. 🐳 2. Restart Docker. Verify that the Docker daemon starts with no errors. πŸ”Œ 3. Reinstall your plugins.

    πŸ— Builder

    • βž• Add capability to specify images used as a cache source on build. These images do not need to have local parent chain and can be pulled from other registries #26839
    • πŸ— (experimental) Add option to squash image layers to the FROM image after successful builds #22641
    • πŸ›  Fix dockerfile parser with empty line after escape #24725
    • βž• Add step number on docker build #24978
    • βž• Add support for compressing build context during image build #25837
    • βž• add --network to docker build #27702
    • πŸ›  Fix inconsistent behavior between --label flag on docker build and docker run #26027
    • πŸ›  Fix image layer inconsistencies when using the overlay storage driver #27209
    • πŸ— Unused build-args are now allowed. A warning is presented instead of an error and failed build #27412
    • πŸ›  Fix builder cache issue on Windows #27805
    • πŸ‘ Allow USER in builder on Windows #28415
    • 🏁 Handle env case-insensitive on Windows #28725

    Contrib

    • βž• Add support for building docker debs for Ubuntu 16.04 Xenial on PPC64LE #23438
    • βž• Add support for building docker debs for Ubuntu 16.04 Xenial on s390x #26104
    • βž• Add support for building docker debs for Ubuntu 16.10 Yakkety Yak on PPC64LE #28046
    • βž• Add RPM builder for VMWare Photon OS #24116
    • βž• Add shell completions to tgz #27735
    • ⚑️ Update the install script to allow using the mirror in China #27005
    • βž• Add DEB builder for Ubuntu 16.10 Yakkety Yak #27993
    • βž• Add RPM builder for Fedora 25 #28222
    • βž• Add make deb support for aarch64 #27625

    Distribution

    • πŸš€ Update notary dependency to 0.4.2 (full changelogs here) #27074
      • Support for compilation on windows docker/notary#970
      • Improved error messages for client authentication errors docker/notary#972
      • Support for finding keys that are anywhere in the ~/.docker/trust/private directory, not just under ~/.docker/trust/private/root_keys or ~/.docker/trust/private/tuf_keys docker/notary#981
      • Previously, on any error updating, the client would fall back on the cache. Now we only do so if there is a network error or if the server is unavailable or missing the TUF data. Invalid TUF data will cause the update to fail - for example if there was an invalid root rotation. docker/notary#982
      • Improve root validation and yubikey debug logging docker/notary#858 docker/notary#891
      • Warn if certificates for root or delegations are near expiry docker/notary#802
      • Warn if role metadata is near expiry docker/notary#786
      • Fix passphrase retrieval attempt counting and terminal detection docker/notary#906
    • 🐳 Avoid unnecessary blob uploads when different users push same layers to authenticated registry #26564
    • πŸ‘ Allow external storage for registry credentials #26354

    🌲 Logging

    • 🐳 Standardize the default logging tag value in all logging drivers #22911
    • πŸ‘Œ Improve performance and memory use when logging of long log lines #22982
    • 🏁 Enable syslog driver for windows #25736
    • βž• Add Logentries Driver #27471
    • ⚑️ Update of AWS log driver to support tags #27707
    • 🐳 Unix socket support for fluentd #26088
    • 🏁 Enable fluentd logging driver on Windows #28189
    • 🐳 Sanitize docker labels when used as journald field names #23725
    • πŸ›  Fix an issue where docker logs --tail returned less lines than expected #28203
    • 🐎 Splunk Logging Driver: performance and reliability improvements #26207
    • 🐳 Splunk Logging Driver: configurable formats and skip for verifying connection #25786

    Networking

    • βž• Add --attachable network support to enable docker run to work in swarm-mode overlay network #25962
    • βž• Add support for host port PublishMode in services using the --publish option in docker service create #27917 and #28943
    • βž• Add support for Windows server 2016 overlay network driver (requires upcoming ws2016 update) #28182
    • πŸ”„ Change the default FORWARD policy to DROP #28257
    • βž• Add support for specifying static IP addresses for predefined network on windows #22208
    • πŸ›  Fix --publish flag on docker run not working with IPv6 addresses #27860
    • πŸ›  Fix inspect network show gateway with mask #25564
    • πŸ›  Fix an issue where multiple addresses in a bridge may cause --fixed-cidr to not have the correct addresses #26659
    • βž• Add creation timestamp to docker network inspect #26130
    • 🐳 Show peer nodes in docker network inspect for swarm overlay networks #28078
    • 🐳 Enable ping for service VIP address #28019

    πŸ”Œ Plugins

    • 🐳 Move plugins out of experimental #28226
    • βž• Add --force on docker plugin remove #25096
    • βž• Add support for dynamically reloading authorization plugins #22770
    • βž• Add description in docker plugin ls #25556
    • βž• Add -f/--format to docker plugin inspect #25990
    • βž• Add docker plugin create command #28164
    • 🐳 Send request's TLS peer certificates to authorization plugins #27383
    • πŸ‘Œ Support for global-scoped network and ipam plugins in swarm-mode #27287
    • 🐳 Split docker plugin install into two API call /privileges and /pull #28963
  • v1.12.6 Changes

    January 10, 2017

    IMPORTANT: Docker 1.12 ships with an updated systemd unit file for rpm 🐧 based installs (which includes RHEL, Fedora, CentOS, and Oracle Linux 7). When ⬆️ upgrading from an older version of docker, the upgrade process may not ⚑️ automatically install the updated version of the unit file, or fail to start 🐳 the docker service if;

    • 🐳 the systemd unit file (/usr/lib/systemd/system/docker.service) contains local changes, or
    • a systemd drop-in file is present, and contains -H fd:// in the ExecStart directive

    🐳 Starting the docker service will produce an error:

    Failed to start docker.service: Unit docker.socket failed to load: No such file or directory.
    

    or

    no sockets found via socket activation: make sure the service was started by systemd.
    

    To resolve this:

    • Backup the current version of the unit file, and replace the file with the version that ships with docker 1.12
    • βœ‚ Remove the Requires=docker.socket directive from the /usr/lib/systemd/system/docker.service file if present
    • βœ‚ Remove -H fd:// from the ExecStart directive (both in the main unit file, and in any drop-in files present).

    After making those changes, run sudo systemctl daemon-reload, and sudo 🐳 systemctl restart docker to reload changes and (re)start the docker daemon.

    NOTE: Docker 1.12.5 will correctly validate that either an IPv6 subnet is provided or that the IPAM driver can provide one when you specify the --ipv6 option.

    If you are currently using the --ipv6 option without specifying the 🐳 --fixed-cidr-v6 option, the Docker daemon will refuse to start with the following message:

    Error starting daemon: Error initializing network controller: Error creating
                           default "bridge" network: failed to parse pool request
                           for address space "LocalDefault" pool " subpool ":
                           could not find an available, non-overlapping IPv6 address
                           pool among the defaults to assign to the network
    

    🚚 To resolve this error, either remove the --ipv6 flag (to preserve the same 🐳 behavior as in Docker 1.12.3 and earlier), or provide an IPv6 subnet as the πŸ›  value of the --fixed-cidr-v6 flag.

    In a similar way, if you specify the --ipv6 flag when creating a network 0️⃣ with the default IPAM driver, without providing an IPv6 --subnet, network creation will fail with the following message:

    Error response from daemon: failed to parse pool request for address space
                                "LocalDefault" pool "" subpool "": could not find an
                                available, non-overlapping IPv6 address pool among
                                the defaults to assign to the network
    

    🚚 To resolve this, either remove the --ipv6 flag (to preserve the same behavior 🐳 as in Docker 1.12.3 and earlier), or provide an IPv6 subnet as the value of the --subnet flag.

    The network network creation will instead succeed if you use an external IPAM driver πŸ‘ which supports automatic allocation of IPv6 subnets.

    βš™ Runtime

    • πŸ›  Fix runC privilege escalation (CVE-2016-9962)
  • v1.12.5 Changes

    December 15, 2016

    IMPORTANT: Docker 1.12 ships with an updated systemd unit file for rpm 🐧 based installs (which includes RHEL, Fedora, CentOS, and Oracle Linux 7). When ⬆️ upgrading from an older version of docker, the upgrade process may not ⚑️ automatically install the updated version of the unit file, or fail to start 🐳 the docker service if;

    • 🐳 the systemd unit file (/usr/lib/systemd/system/docker.service) contains local changes, or
    • a systemd drop-in file is present, and contains -H fd:// in the ExecStart directive

    🐳 Starting the docker service will produce an error:

    Failed to start docker.service: Unit docker.socket failed to load: No such file or directory.
    

    or

    no sockets found via socket activation: make sure the service was started by systemd.
    

    To resolve this:

    • Backup the current version of the unit file, and replace the file with the version that ships with docker 1.12
    • βœ‚ Remove the Requires=docker.socket directive from the /usr/lib/systemd/system/docker.service file if present
    • βœ‚ Remove -H fd:// from the ExecStart directive (both in the main unit file, and in any drop-in files present).

    After making those changes, run sudo systemctl daemon-reload, and sudo 🐳 systemctl restart docker to reload changes and (re)start the docker daemon.

    NOTE: Docker 1.12.5 will correctly validate that either an IPv6 subnet is provided or that the IPAM driver can provide one when you specify the --ipv6 option.

    If you are currently using the --ipv6 option without specifying the 🐳 --fixed-cidr-v6 option, the Docker daemon will refuse to start with the following message:

    Error starting daemon: Error initializing network controller: Error creating
                           default "bridge" network: failed to parse pool request
                           for address space "LocalDefault" pool " subpool ":
                           could not find an available, non-overlapping IPv6 address
                           pool among the defaults to assign to the network
    

    🚚 To resolve this error, either remove the --ipv6 flag (to preserve the same 🐳 behavior as in Docker 1.12.3 and earlier), or provide an IPv6 subnet as the πŸ›  value of the --fixed-cidr-v6 flag.

    In a similar way, if you specify the --ipv6 flag when creating a network 0️⃣ with the default IPAM driver, without providing an IPv6 --subnet, network creation will fail with the following message:

    Error response from daemon: failed to parse pool request for address space
                                "LocalDefault" pool "" subpool "": could not find an
                                available, non-overlapping IPv6 address pool among
                                the defaults to assign to the network
    

    🚚 To resolve this, either remove the --ipv6 flag (to preserve the same behavior 🐳 as in Docker 1.12.3 and earlier), or provide an IPv6 subnet as the value of the --subnet flag.

    The network network creation will instead succeed if you use an external IPAM driver πŸ‘ which supports automatic allocation of IPv6 subnets.

    βš™ Runtime

    • πŸ›  Fix race on sending stdin close event #29424

    Networking

    • πŸ›  Fix panic in docker network ls when a network was created with --ipv6 and no ipv6 --subnet in older docker versions #29416

    Contrib

    • πŸ›  Fix compilation on Darwin #29370
  • v1.12.4 Changes

    December 12, 2016

    IMPORTANT: Docker 1.12 ships with an updated systemd unit file for rpm 🐧 based installs (which includes RHEL, Fedora, CentOS, and Oracle Linux 7). When ⬆️ upgrading from an older version of docker, the upgrade process may not ⚑️ automatically install the updated version of the unit file, or fail to start 🐳 the docker service if;

    • 🐳 the systemd unit file (/usr/lib/systemd/system/docker.service) contains local changes, or
    • a systemd drop-in file is present, and contains -H fd:// in the ExecStart directive

    🐳 Starting the docker service will produce an error:

    Failed to start docker.service: Unit docker.socket failed to load: No such file or directory.
    

    or

    no sockets found via socket activation: make sure the service was started by systemd.
    

    To resolve this:

    • Backup the current version of the unit file, and replace the file with the version that ships with docker 1.12
    • βœ‚ Remove the Requires=docker.socket directive from the /usr/lib/systemd/system/docker.service file if present
    • βœ‚ Remove -H fd:// from the ExecStart directive (both in the main unit file, and in any drop-in files present).

    After making those changes, run sudo systemctl daemon-reload, and sudo 🐳 systemctl restart docker to reload changes and (re)start the docker daemon.

    βš™ Runtime

    • πŸ›  Fix issue where volume metadata was not removed #29083
    • πŸ”’ Asynchronously close streams to prevent holding container lock #29050
    • πŸ›  Fix selinux labels for newly created container volumes #29050
    • βœ‚ Remove hostname validation #28990
    • πŸ›  Fix deadlocks caused by IO races #29095 #29141
    • 🐳 Return an empty stats if the container is restarting #29150
    • πŸ›  Fix volume store locking #29151
    • 🐳 Ensure consistent status code in API #29150
    • πŸ›  Fix incorrect opaque directory permission in overlay2 #29093
    • 🐳 Detect plugin content and error out on docker pull #29297

    Swarm Mode

    Networking

    🌲 Logging

    • ⚑️ Update syslog log driver #29150

    Contrib

    • ⬆️ Run "dnf upgrade" before installing in fedora #29150
    • βž• Add build-date back to RPM packages #29150
    • 🐳 deb package filename changed to include distro to distinguish between distro code names #27829
  • v1.12.3 Changes

    October 26, 2016

    IMPORTANT: Docker 1.12 ships with an updated systemd unit file for rpm 🐧 based installs (which includes RHEL, Fedora, CentOS, and Oracle Linux 7). When ⬆️ upgrading from an older version of docker, the upgrade process may not ⚑️ automatically install the updated version of the unit file, or fail to start 🐳 the docker service if;

    • 🐳 the systemd unit file (/usr/lib/systemd/system/docker.service) contains local changes, or
    • a systemd drop-in file is present, and contains -H fd:// in the ExecStart directive

    🐳 Starting the docker service will produce an error:

    Failed to start docker.service: Unit docker.socket failed to load: No such file or directory.
    

    or

    no sockets found via socket activation: make sure the service was started by systemd.
    

    To resolve this:

    • Backup the current version of the unit file, and replace the file with the version that ships with docker 1.12
    • βœ‚ Remove the Requires=docker.socket directive from the /usr/lib/systemd/system/docker.service file if present
    • βœ‚ Remove -H fd:// from the ExecStart directive (both in the main unit file, and in any drop-in files present).

    After making those changes, run sudo systemctl daemon-reload, and sudo 🐳 systemctl restart docker to reload changes and (re)start the docker daemon.

    βš™ Runtime

    • πŸ›  Fix ambient capability usage in containers (CVE-2016-8867) #27610
    • 🏁 Prevent a deadlock in libcontainerd for Windows #27136
    • πŸ›  Fix error reporting in CopyFileWithTar #27075
    • 🐳 Reset health status to starting when a container is restarted #27387
    • 🐳 Properly handle shared mount propagation in storage directory #27609
    • πŸ›  Fix docker exec #27610
    • πŸ›  Fix backward compatibility with containerd’s events log #27693

    Swarm Mode

    Networking

    🌲 Logging

    • ⚑️ Update fluent-logger-golang to v1.2.1 #27474

    Contrib

    • ⚑️ Update buildtags for armhf ubuntu-trusty #27327
    • βž• Add AppArmor to runc buildtags for armhf #27421
  • v1.12.2 Changes

    October 11, 2016

    IMPORTANT: Docker 1.12 ships with an updated systemd unit file for rpm 🐧 based installs (which includes RHEL, Fedora, CentOS, and Oracle Linux 7). When ⬆️ upgrading from an older version of docker, the upgrade process may not ⚑️ automatically install the updated version of the unit file, or fail to start 🐳 the docker service if;

    • 🐳 the systemd unit file (/usr/lib/systemd/system/docker.service) contains local changes, or
    • a systemd drop-in file is present, and contains -H fd:// in the ExecStart directive

    🐳 Starting the docker service will produce an error:

    Failed to start docker.service: Unit docker.socket failed to load: No such file or directory.
    

    or

    no sockets found via socket activation: make sure the service was started by systemd.
    

    To resolve this:

    • Backup the current version of the unit file, and replace the file with the version that ships with docker 1.12
    • βœ‚ Remove the Requires=docker.socket directive from the /usr/lib/systemd/system/docker.service file if present
    • βœ‚ Remove -H fd:// from the ExecStart directive (both in the main unit file, and in any drop-in files present).

    After making those changes, run sudo systemctl daemon-reload, and sudo 🐳 systemctl restart docker to reload changes and (re)start the docker daemon.

    βš™ Runtime

    • πŸ›  Fix a panic due to a race condition filtering docker ps #26049
    • 🐳 Implement retry logic to prevent "Unable to remove filesystem" errors when using the aufs storage driver #26536
    • Prevent devicemapper from removing device symlinks if dm.use_deferred_removal is enabled #24740
    • πŸ›  Fix an issue where the CLI did not return correct exit codes if a command was run with invalid options #26777
    • πŸ›  Fix a panic due to a bug in stdout / stderr processing in health checks #26507
    • πŸ›  Fix exec's children handling #26874
    • πŸ›  Fix exec form of HEALTHCHECK CMD #26208

    Networking

    Swarm Mode

    Contrib

    • ⚑️ Update the debian sysv-init script to use dockerd instead of docker daemon #25869
    • πŸ‘Œ Improve stability when running the docker client on MacOS Sierra #26875
    • πŸ›  Fix installation on debian stretch #27184

    🏁 Windows

    • πŸ›  Fix an issue where arrow-navigation did not work when running the docker client in ConEmu #25578
  • v1.12.1 Changes

    August 18, 2016

    IMPORTANT: Docker 1.12 ships with an updated systemd unit file for rpm 🐧 based installs (which includes RHEL, Fedora, CentOS, and Oracle Linux 7). When ⬆️ upgrading from an older version of docker, the upgrade process may not ⚑️ automatically install the updated version of the unit file, or fail to start 🐳 the docker service if;

    • 🐳 the systemd unit file (/usr/lib/systemd/system/docker.service) contains local changes, or
    • a systemd drop-in file is present, and contains -H fd:// in the ExecStart directive

    🐳 Starting the docker service will produce an error:

    Failed to start docker.service: Unit docker.socket failed to load: No such file or directory.
    

    or

    no sockets found via socket activation: make sure the service was started by systemd.
    

    To resolve this:

    • Backup the current version of the unit file, and replace the file with the version that ships with docker 1.12
    • βœ‚ Remove the Requires=docker.socket directive from the /usr/lib/systemd/system/docker.service file if present
    • βœ‚ Remove -H fd:// from the ExecStart directive (both in the main unit file, and in any drop-in files present).

    After making those changes, run sudo systemctl daemon-reload, and sudo 🐳 systemctl restart docker to reload changes and (re)start the docker daemon.

    Client

    • βž• Add Joined at information in node inspect --pretty #25512
    • πŸ›  Fix a crash on service inspect #25454
    • πŸ›  Fix issue preventing service update --env-add to work as intended #25427
    • πŸ›  Fix issue preventing service update --publish-add to work as intended #25428
    • βœ‚ Remove service update --network-add and service update --network-rm flags because this feature is not yet implemented in 1.12, but was inadvertently added to the client in 1.12.0 #25646

    Contrib

    • 🐳 Official ARM installation for Debian Jessie, Ubuntu Trusty, and Raspbian Jessie #24815 #25591
    • βž• Add selinux policy per distro/version, fixing issue preventing successful installation on Fedora 24, and Oracle Linux #25334 #25593

    Networking

    • πŸ›  Fix issue that prevented containers to be accessed by hostname with Docker overlay driver in Swarm Mode #25603 #25648
    • πŸ›  Fix random network issues on service with published port #25603
    • πŸ›  Fix unreliable inter-service communication after scaling down and up #25603
    • πŸ›  Fix issue where removing all tasks on a node and adding them back breaks connectivity with other services #25603
    • πŸ›  Fix issue where a task that fails to start results in a race, causing a network xxx not found error that masks the actual error #25550
    • 🐳 Relax validation of SRV records for external services that use SRV records not formatted according to RFC 2782 #25739

    πŸ”Œ Plugins (experimental)

    • 🐳 Make daemon events listen for plugin lifecycle events #24760
    • 🐳 Check for plugin state before enabling plugin #25033
    • βœ‚ Remove plugin root from filesystem on plugin rm #25187
    • 🐳 Prevent deadlock when more than one plugin is installed #25384

    βš™ Runtime

    • 🐳 Mask join tokens in daemon logs #25346
    • πŸ›  Fix docker ps --filter causing the results to no longer be sorted by creation time #25387
    • πŸ›  Fix various crashes #25053

    πŸ”’ Security

    • βž• Add /proc/timer_list to the masked paths list to prevent information leak from the host #25630
    • Allow systemd to run with only --cap-add SYS_ADMIN rather than having to also add --cap-add DAC_READ_SEARCH or disabling seccomp filtering #25567

    Swarm

    • πŸ›  Fix an issue where the swarm can get stuck electing a new leader after quorum is lost #25055
    • πŸ›  Fix unwanted rescheduling of containers after a leader failover #25017
    • πŸ”„ Change swarm root CA key to P256 curve swarmkit#1376
    • πŸ‘ Allow forced removal of a node from a swarm #25159
    • πŸ›  Fix connection leak when a node leaves a swarm swarmkit/#1277
    • 🐳 Backdate swarm certificates by one hour to tolerate more clock skew swarmkit/#1243
    • 🐳 Avoid high CPU use with many unschedulable tasks swarmkit/#1287
    • πŸ›  Fix issue with global tasks not starting up swarmkit/#1295
    • 🐳 Garbage collect raft logs swarmkit/#1327

    Volume

    • 🐳 Persist local volume options after a daemon restart #25316
    • πŸ›  Fix an issue where the mount ID was not returned on volume unmount #25333
    • πŸ›  Fix an issue where a volume mount could inadvertently create a bind mount #25309
    • 🐳 docker service create --mount type=bind,... now correctly validates if the source path exists, instead of creating it #25494
  • v1.12.0 Changes

    July 28, 2016

    IMPORTANT: Docker 1.12.0 ships with an updated systemd unit file for rpm 🐧 based installs (which includes RHEL, Fedora, CentOS, and Oracle Linux 7). When ⬆️ upgrading from an older version of docker, the upgrade process may not ⚑️ automatically install the updated version of the unit file, or fail to start 🐳 the docker service if;

    • 🐳 the systemd unit file (/usr/lib/systemd/system/docker.service) contains local changes, or
    • a systemd drop-in file is present, and contains -H fd:// in the ExecStart directive

    🐳 Starting the docker service will produce an error:

    Failed to start docker.service: Unit docker.socket failed to load: No such file or directory.
    

    or

    no sockets found via socket activation: make sure the service was started by systemd.
    

    To resolve this:

    • Backup the current version of the unit file, and replace the file with the version that ships with docker 1.12
    • βœ‚ Remove the Requires=docker.socket directive from the /usr/lib/systemd/system/docker.service file if present
    • βœ‚ Remove -H fd:// from the ExecStart directive (both in the main unit file, and in any drop-in files present).

    After making those changes, run sudo systemctl daemon-reload, and sudo 🐳 systemctl restart docker to reload changes and (re)start the docker daemon.

    IMPORTANT: With Docker 1.12, a Linux docker installation now has two βž• additional binaries; dockerd, and docker-proxy. If you have scripts for ⚑️ installing docker, please make sure to update them accordingly.

    πŸ— Builder

    • πŸ†• New HEALTHCHECK Dockerfile instruction to support user-defined healthchecks #23218
    • πŸ†• New SHELL Dockerfile instruction to specify the default shell when using the shell form for commands in a Dockerfile #22489
    • βž• Add #escape= Dockerfile directive to support platform-specific parsing of file paths in Dockerfile #22268
    • βž• Add support for comments in .dockerignore #23111
    • πŸ‘Œ Support for UTF-8 in Dockerfiles #23372
    • 🐳 Skip UTF-8 BOM bytes from Dockerfile and .dockerignore if exist #23234
    • 🐧 Windows: support for ARG to match Linux #22508
    • πŸ›  Fix error message when building using a daemon with the bridge network disabled #22932

    Contrib

    • 🐧 Enable seccomp for Centos 7 and Oracle Linux 7 #22344
    • βœ‚ Remove MountFlags in systemd unit to allow shared mount propagation #22806

    Distribution

    • βž• Add --max-concurrent-downloads and --max-concurrent-uploads daemon flags useful for situations where network connections don't support multiple downloads/uploads #22445
    • 🐳 Registry operations now honor the ALL_PROXY environment variable #22316
    • 🐳 Provide more information to the user on docker load #23377
    • πŸ“‡ Always save registry digest metadata about images pushed and pulled #23996

    🌲 Logging

    • 🐳 Syslog logging driver now supports DGRAM sockets #21613
    • βž• Add --details option to docker logs to also display log tags #21889
    • 🐳 Enable syslog logger to have access to env and labels #21724
    • 🐳 An additional syslog-format option rfc5424micro to allow microsecond resolution in syslog timestamp #21844
    • 🐳 Inherit the daemon log options when creating containers #21153
    • βœ‚ Remove docker/ prefix from log messages tag and replace it with {{.DaemonName}} so that users have the option of changing the prefix #22384

    Networking

    • 🐳 Built-in Virtual-IP based internal and ingress load-balancing using IPVS #23361
    • 🐳 Routing Mesh using ingress overlay network #23361
    • 🐳 Secured multi-host overlay networking using encrypted control-plane and Data-plane #23361
    • 🐳 MacVlan driver is out of experimental #23524
    • βž• Add driver filter to network ls #22319
    • βž• Adding network filter to docker ps --filter #23300
    • βž• Add --link-local-ip flag to create, run and network connect to specify a container's link-local address #23415
    • βž• Add network label filter support #21495
    • βœ‚ Removed dependency on external KV-Store for Overlay networking in Swarm-Mode #23361
    • βž• Add container's short-id as default network alias #21901
    • 🐳 run options --dns and --net=host are no longer mutually exclusive #22408
    • πŸ›  Fix DNS issue when renaming containers with generated names #22716
    • πŸ‘ Allow both network inspect -f {{.Id}} and network inspect -f {{.ID}} to address inconsistency with inspect output #23226

    πŸ”Œ Plugins (experimental)

    • πŸ†• New plugin command to manager plugins with install, enable, disable, rm, inspect, set subcommands #23446