Released January 16, 2019
- Upgrade jackson deps to from 2.9.6 to latest 2.9.8 (1132)
- Relocate remaining packages that are included in shaded jar (1111)
- Support for Windows 10 Docker named pipes (875)
Released October 4, 2018
- Change maven-compiler-plugin source and target from 1.7 to 1.8 to prepare for Java 8. JAR should still be compatible with JRE 1.7.
- Updates to allow docker-client to function on Java 9+ (1068)
Released August 29, 2018
- Make ContainExit.exitCode(), HealthLog.exitCode() and ExecState.exitCode() return a Long instead of Integer.
- Add support for
runtime
in HostConfig
Released August 26, 2018
- Make ContainerState.exitCode() return a Long instead of Integer (1052)
- Refactor authentication with docker config.json file (1051)
Released Jun 2, 2018
- Make TaskStatus.containerStatus nullable (1005)
- Support getting image information via /distribution
- Support EC key spec algorithm (887)
- Allow setting up DockerClientBuilder with RequestEntityProcessing
Released May 28, 2018
- Support interrupting pull, push, build, and create
Released May 23, 2018
- Fix DockerConfigReader when ~/.docker/config.json has no auths
Released May 20, 2018
- Add support for Service placement preferences
- Allow attaching to a not started container
- Fix for #978: Docker client does not honour the -Dhttp.nonProxyHosts
Released March 14, 2018
- Add basic documentation for networks
- Make Network.options nullable (983)
- Fix: honor -Dhttp.nonProxyHosts (978)
- Fix: Shade HK2 implementation properly
- Add support for credsStore in new docker versions
Released January 30, 2018
- Fix for proxy usage (890)
Released January 25, 2018
- Upgrade bouncy castle from 1.52 to 1.59
- Add support for http.proxyUser and http.proxyPassword
- Upgrade FasterXML Jackson from 2.8.8 to 2.9.4
Released January 15, 2018
- Add Volume.Options
- Fix containerAction: use query params
- add support for automatic SELinux labeling
- #890 fix for proxy usage
- Set log level to debug when creating containers, fixes #908
Released November 28, 2017
ContainerConfig.exposedPorts
is serialized as a map of keys to empty map placeholders.exposedPorts
had been serialized as keys ->null
. (Fixes 893)- Breaking API change: The method
ContainerConfig.volumes()
has changed signature fromImmutableMap<String, Map> volumes()
(where the secondMap
was always empty) toImmutableSet<String> volumes()
. This change simplifies the code internally. (898)
Released November 15, 2017
- Support loading auth config for repos with no scheme in their URL (910)
- execStart should use the 'noTimeoutClient' (916)
- upgrade to jnr-unixsocket 0.18 (918)
- upgrade maven-shade-plugin from 2.4.1 to 3.1.0 (922; fixes 900)
Released September 26, 2017
- Support creating a service without specifying a name (891 Allow
ServiceSpec.name
to be nullable) - Change
TaskStatus.timestamp
fromString
toDate
(895)
Released August 14, 2017
- Allow
ImageInfo.RootFS
to be nullable. This field was added in Docker Remote API 1.23 / Docker version 1.11. The field was added to the ImageInfo class in docker-client 8.8.2. (862) - Support list, inspect, create, update, and delete configs
Released August 8, 2017
- The "shaded" artifact for docker-client
additionally relocates
com.google.guava:guava
classes, to try to help avoid conflicts for users that depend on incompatible versions of Guava. (850) - Upgrade Google Guava to 20.0 (792)
Released August 3, 2017
- add 'force' parameter to
disconnectFromNetwork
(839) - allow additional
MemoryStats
attributes to be nullable (847) - add missing
Options
property toIpam
, allowConfig
to be nullable (843)
Released July 24, 2017
- add
attachable
property toNetwork
(830) - allow
UpdateStatus.completedAt
to be nullable (834) - add
RootFS
property toinspectImage
response (835)
Released July 13, 2017
- Rename
NoOpRegistryAuthSupplier
toFixedRegistryAuthSupplier
- Fix RegistryAuth JSON properties; RegistryAuth keys should all be lowercase
- Add Event types: plugin, node, service, and secret (825)
- Add Event filters: plugin and scope (825)
- Small fixes to code and tests for docker 17.06.0 (825)
Released July 2, 2017
- Fix: make
SwarmJoin.AdvertiseAddr
nullable;RemoteAddrs
andJoinToken
are not (796) - Fix:
Node.ManagerStatus
when a manager is not a leader (790)
- Add
HostConfig.NanoCpus
- Add
ContainerConfig.Healthcheck.StartPeriod
- Add
Node.ManagerStatus
- Return swarm info from
DockerClient.info()
, i.e./info
endpoint - Support updating swarm node with
DockerClient.updateNode()
- Support deleting swarm node with
DockerClient.deleteNode()
- Support returning warnings when creating a service
- Fix: make MemoryStat.stats nullable for ARM (784)
Released June 5, 2017
Add RegistryAuthSuppliers for:
- reading from docker config file (ConfigFileRegistryAuthSupplier)
- combining multiple suppliers (MultiRegistryAuthSupplier)
Also change the default behavior of DefaultDockerClient.Builder to use the
ConfigFileRegistryAuthSupplier if no other authentication options are passed to
the Builder, so that out-of-the-box, any authentication info from the docker
config file (at ~/.dockercfg
or ~/.docker/config.json
) is used.
Released May 31, 2017
- ContainerRegistryAuthSupplier should ignore exceptions in refreshing the Access Token unless RegistryAuth info is needed for a GCR image (773)
Released May 31, 2017
Added NetworkConfig.Attachable.
Released May 26, 2017
This version introduces a new way to configure DefaultDockerClient to use authentication - the RegistryAuthSupplier interface.
Historically, a single RegistryAuth instance was configured in
DefaultDockerClient at construction-time and the instance would be used
throughout the lifetime of the DefaultDockerClient instance. Many of the static
factory methods in the RegistryAuth class would use the first auth element
found in the docker client config file, and a DefaultDockerClient configured
with dockerAuth(true)
would have this behavior enabled by default.
Inspired by a desire to be able to integrate with pushing and pulling images to Google Container Registry (where the docker client config file contains short-lived access tokens), the previous behavior has been removed and is replaced by RegistryAuthSupplier. DefaultDockerClient will now invoke the appropriate method on the configured RegistryAuthSupplier instance before each API operation that requires authentication. This allows for use of authentication info that is dynamic and changes during the lifetime of the DefaultDockerClient instance.
The docker-client library contains an implementation of this interface that
returns static RegistryAuth instances (NoOpRegistryAuthSupplier, which is
configured for you if you use the old method registryAuth(RegistryAuth)
in
DefaultDockerClient.Builder) and an implementation for refreshing GCR access
tokens with gcloud docker -a
. We suggest that users implement this interface
themselves if there is a need to customize the behavior.
The new class DockerConfigReader replaces the static factory methods from RegistryAuth.
The following methods are deprecated and will be removed in a future release:
- DefaultDockerClient.Builder.registryAuth(RegistryAuth)
- all overloads of RegistryAuth.fromDockerConfig(...)
Jackson has been upgraded from 2.6.0 to 2.8.8.
Previously deprecated DockerClient methods that have a RegistryAuth parameter but never used the value were removed. These methods are:
load(String, InputStream, RegistryAuth)
load(String, InputStream, RegistryAuth, ProgressHandler)
save(String, RegistryAuth)
AuthConfig
->RegistryAuth
AuthRegistryConfig
->RegistryConfigs
ContainerConfig.volumes()
->ContainerConfig.volumeNames()
These breaking changes are required since AutoValue doesn't allow public constructors.
HostConfig.Bind
new HostConfig.Bind.BuilderTo("to")
->HostConfig.Bind.BuilderTo.create("to")
new HostConfig.Bind.BuilderFrom("from")
->HostConfig.Bind.BuilderFrom.create("from")
new RemovedImage()
->RemovedImage.create()
new ProgressMessage()
->ProgressMessage.builder()
new PortBinding()
->PortBinding.of()
new ContainerExit()
->ContainerExit.create()
new ContainerCreation()
-> ContainerCreation.builder()
- no public constructor for
ContainerInfo
,Info
, orImageInfo
anymore
AutoValue recommends using the immutable type (like ImmutableSet) as the actual property type.
List
->ImmutableList
Map
->ImmutableMap
Set
->ImmutableSet
You'll need to call build()
on the builder to get their attributes. AutoValue doesn't support
builder getters.
ContainerConfig.Builder.volumes("/foo")
->ContainerConfig.Builder.addVolume("/foo")
- methods prefixed by
get
in the following classes lose theget
ContainerCreation
ContainerConfig
- methods prefixed by
with
in the following classes lose thewith
TaskSpec.Builder
PortConfig.Builder
EndpointSpec.Builder
RestartPolicy.Builder
ContainerSpec.Builder
ServiceSpec.Builder
NetworkAttachmentConfig.Builder
Service.Criteria.Builder
Task.Criteria.Builder
PortBinding.hostPort()
->PortBinding.of()
Deprecations to Ipam
and IpamConfig
.
Before:
final Ipam ipam = Ipam.builder()
.driver("default")
.config("192.168.0.0/24", "192.168.0.0/24", "192.168.0.1")
.build();
After:
final IpamConfig ipamConfig = IpamConfig.create("192.168.0.0/24", "192.168.0.0/24", "192.168.0.1");
final Ipam ipam = Ipam.builder()
.driver("default")
.config(singletonList(ipamConfig))
.build();