Development documentation

Schema location

The schema is located in the folder: src/main/resources.

Adding the schemas to the main project web site

During the site phase the schema is copied to the main site in the pineapple-project. The schema is copied to the directory: /ns/support.

This is implemented in the pom.xml for the pineapple-docker-suppor project.

Generation of classes from XML schemas

The project uses JAXB through the Maven plugin cxf-xjc-plugin to generate classes from XML schema.

customised package names

The generated classes are mapping into the package com.alpha.pineapple.docker.model.rest using the JAXB bindings file at: src/main/resources/bindings.xjb.

customised type names

The JAXB bindings file also defines mappings of Schema type into Java types. The applied rule is to remove the postfixed Type from the Schema type in the corresponding Java types, i.e. from the schema type named NiceType a Java type named Nice is generated by JAXB.

Generic Schema types

The schema contains these generic types:

stringList

Type for list of string.

intList

Type for list of integers.

errorType

Standard Docker error info.

graphDriverType

Container for graphDriverDataType

Implemented as a map, see Bindings section below.

graphDriverDataType

Docker Graph driver configuration (Output from inspecting an image or container).

Partial output from the Inspect a container (v1.28) operation.

Defined Docker type: GraphDriverData

weightDeviceType

Partial output from the Inspect a container (v1.28) operation.

Defined Docker type: WeightDevice

throttleDeviceType

Partial output from the Inspect a container (v1.28) operation.

Defined Docker type: ThrottleDevice

MountType

Partial output from the Inspect a container (v1.28) operation.

Used by the schema types

  • containerJsonType
  • hostConfigType
  • listedContainerType

Defined Docker type: Mount

EndpointSettings

Partial output from the Inspect a container (v1.28) operation.

EndpointSettings stores the network endpoint details.

Network output from the List containers (v1.37) operation.

Value in map. Used by the schema type inspectedContainerNetworkSettingsNetworkType.

jsonProgressType

JSONProgress describes a Progress.

Detailed info about progress during image creation. Partial output from image creation.

Used by the schema type jsonMessageType.

Defined Docker type: JSONProgress

jsonErrorType

JSONError wraps a concrete Code and Message, Code is is an integer error code, Message is the error message

Used by the schema type jsonMessageType.

Defined Docker type: JSONError

jsonRawMessageType

Corresponds to json.RawMessage which is a standard in the GO package encoding/json.

Used by the schema type jsonMessageType.

Defined Go type: json.RawMessage

portSetType

PortSet is a collection of structs indexed by Port.

Used by the schema type containerConfigurationType.

  • inspectedContainerNetworkSettingsType.

    Defined Docker type: PortSet

portSetElementType

Port map element. The value is a port binding.

The JSON marshalled from this type when the Docker REST API is invoked requires a map with values with the format: { "<port>/<tcp|udp>: {}" }. To support this requirement the exposed port type defines a port (the port/protocol part) and a null value (the {} part). To generate the null object for the value the portSetElementNullValueType is used.

Used by the schema type portSetType.

No corresponding Docker type.

portSetElementNullValueType

Null value for port in port set.

Used by the schema type portSetElementType.

Defined Docker type: struct

portMapType

Element in port set. The value isn't used by Docker, but a null value (an object) must be defined.

Used by the schema types:

  • hostConfigType.
  • inspectedContainerNetworkSettingsType.

Defined Docker type: PortMap

portMapElementType

Port map element. The value is a port binding.

The JSON marshalled from this type when the Docker REST API is invoked requires a map with values with the format: { "22/tcp": [{ "HostPort": "11022" }] } . To support this requirement the binding type defines a key (XML element named port) and value (XML element named binding). The value is of the type portBindingType.

Used by the schema type portMapType.

No corresponding Docker type.

portBindingType

PortBinding represents a binding between a Host IP address and a Host Port.

Used by the schema type portMapElementType.

Defined Docker type: PortBinding

stringMapType

Map with string keys and string value.

Used by the schema types:

  • TODO.

Defined Docker type: map[string]string.

stringMapElementType

String map element. The value is a string.

Used by the schema type stringMapType.

No corresponding Docker type.

imageMetadataType

ImageMetadata contains engine-local data about the image.

Used by the schema type imageInspectType.

Defined Docker type: ImageMetadata

deviceMappingType

DeviceMapping represents the device mapping between the host and the container.

Used by the schema type hostConfigType.

Defined Docker type: DeviceMapping

Schema types for images

listedImageType

Info about a listed Docker image.

Output from the Inspect an image (v1.28) operation.

ImageInspectType

Info about an inspected Docker image.

Output from the Inspect an image (v1.28) operation.

Defined Docker type: ImageInspect

jsonMessageType

Info about Docker image creation progress.

Defined Docker type: JSONMessage

imageDeletionType

Info about Docker image deletion progress.

Schema types for containers

listedContainerType

Info about a listed Docker container.

Output from listing containers.

Defined Docker type: Container

containerConfigurationType

Info about Docker container configuration.

Input to container creation and output from container and image inspection. Used by these schema types:

  • imageInspectType

Defined Docker type: container.Config

containerJson

Info about an inspected Docker container.

Partial output from the Inspect a container (v1.28) operation.

Defined Docker type: ContainerJSON

containerConfigurationType

Docker container and image configuration.

Partial output from the Inspect a container (v1.28) and Inspect an image (v1.28) operations.

Defined Docker type: HostConfig

Used by these schema types:

  • containerJsonType (TODO: refactoring still pending, issue #112)
  • imageInspectType
HealthConfigType

Configuration settings for the healthcheck feature for a Docker container.

Partial output from the Inspect a container (v1.28) operation.

Defined Docker type: HostConfig

Used by these schema types:

  • containerConfigurationType
hostConfigType

Info about the host configuration of a Docker container.

Partial output from the Inspect a container (v1.37) operation.

Defined Docker type: HostConfig

Used by these schema types:

  • containerConfigurationType
  • containerJsonType
  • listedContainerType
logConfigType

LogConfig represents the logging configuration of the container.

Partial output from the Inspect a container (v1.37) operation.

Defined Docker type: LogConfig

Used by these schema types:

  • hostConfigType
restartPolicyType

RestartPolicy represents the restart policies of the container.

Partial output from the Inspect a container (v1.37) operation.

Defined Docker type: RestartPolicy

Used by these schema types:

  • hostConfigType

TODO: rewrite from here:

The schema contains these types for handling container:

  • containerConfigurationLabelType - Docker container configuration of a label (Input to container creation, output from container inspection and listing of containers). The JSON marshalled from this type when the Docker REST API is invoked requires a map with values with the format: { string : string }. To support this requirement the label type defines a key and value
  • containerConfigurationLabelsType - Docker container configuration of a map of labels (Input to container creation, output from container inspection and listing of containers). Each label is defined using the containerConfigurationLabelType. During marshalling the type is bound to the map ContainerConfigurationLabelsMap using the ContainerConfigurationLabelsMapAdapter.
  • containerConfigurationVolumeType - Docker container configuration of a mounted volume (Input to container creation and output from container inspection). The JSON marshalled from this type when the Docker REST API is invoked requires a map with where string keys defined a mount points with null object values. To support this requirement the exposed port type defines a volume key and a null value . To generate the null object for the value the containerConfigurationVolumeNullValueType is used.
  • containerConfigurationVolumeNullValueType - Null value for volume (Input to container creation and output from container inspection).
  • containerConfigurationVolumesType - Docker container configuration of a map of volumes (Input to container creation and output from container inspection). Each volume is defined using the containerConfigurationVolumeType. During marshalling the type is bound to the map ContainerConfigurationVolumesMap using the ContainerConfigurationVolumesMapAdapter.
  • createdContainerType - Info about created Docker container (Output from container creation).
  • listedContainerType - Info about a listed Docker container (Output from listing containers).
  • listedContainerPortType - Info about a port from a container info (Partial output from listing a container).
  • inspectedContainerStateType - Info about the state of a Docker container (Partial output from inspecting a containers).
  • inspectedContainerNetworkSettingsType - Info about the network configuration of a Docker container (Partial output from inspecting a containers).
  • inspectedContainerNetworkSettingsNetworkType - Info about a Docker container network from a container inspection info. The JSON marshalled from this type when the Docker REST API is invoked requires a map with where string keys defines the driver with network object values. To support this requirement the networks type defines a driver key and a network value
  • inspectedContainerNetworkSettingsNetworkType - Docker container configuration of a map of container networks from container inspection. Each volume is defined using the inspectedContainerNetworkSettingsNetworkType. During marshalling the type is bound to the map InspectedContainerNetworkSettingsNetworksMap using the InspectedContainerNetworkSettingsNetworksMapAdapter.

    TODO: inspectedContainerNetworkSettingsType

Binding

Exposed ports

To support binding of schema element containerConfigurationType.exposedPorts to a map, the binding is customised to bind to the custom map PortSetMap using the custom JABX adaptor PortSetMapAdapter.

Labels

To support binding of schema element containerConfigurationType.labels to a map, the binding is customised to bind to the custom map ContainerConfigurationLabelsMap using the custom JABX adaptor ContainerConfigurationLabelsMapAdapter. The map and JAXB adaptor is shared with the other bindings in the section.

To support binding of schema element listedContainerType.labels to a map, the binding is customised to bind to the custom map ContainerConfigurationLabelsMap using the custom JABX adaptor ContainerConfigurationLabelsMapAdapter. The map and JAXB adaptor is shared with the other bindings in the section.

To support binding of schema element inspectedImageContainerType.labels to a map, the binding is customised to bind to the custom map ContainerConfigurationLabelsMap using the custom JABX adaptor ContainerConfigurationLabelsMapAdapter. The map and JAXB adaptor is shared with the other bindings in the section.

To support binding of schema element listedImageType.labels to a map, the binding is customised to bind to the custom map ContainerConfigurationLabelsMap using the custom JABX adaptor ContainerConfigurationLabelsMapAdapter. The map and JAXB adaptor is shared with the other bindings in the section.

To support binding of schema element InspectedContainerNetworkSettingsNetworkValue.driverOpts to a map, the binding is customised to bind to the custom map StringMapMap using the custom JABX adaptor StringMapAdapter. The map and JAXB adaptor is shared with the other bindings in the section.

To support binding of schema element logConfigType.config to a map, the binding is customised to bind to the custom map StringMapMap using the custom JABX adaptor StringMapAdapter. The map and JAXB adaptor is shared with the other bindings in the section.

Port binding

To support binding of schema element hostConfigType.portBindings to a map, the binding is customised to bind to the custom map PortMapMap using the custom JABX adaptor PortMapMapAdapter.

To support binding of schema element inspectedContainerNetworkSettingsType.ports to a map, the binding is customised to bind to the custom map PortMapMap using the custom JABX adaptor PortMapMapAdapter.

Restart policy

TODO:..

Volumes

To support binding of containerConfigurationType.volumes to a map, the binding is customised to bind to the custom map ContainerConfigurationVolumesMap>> using the custom JABX adaptor <<<ContainerConfigurationVolumesMapAdapter.

Network

To support binding of schema element inspectedContainerNetworkSettingsType.networks to a map, the binding is customised to bind to the custom map InspectedContainerNetworkSettingsNetworksMap using the custom JABX adaptor InspectedContainerNetworkSettingsNetworksMapAdapter.

GraphDriver Data

To support binding of schema element inspectedImageGraphDriverType.data to a map, the binding is customised to bind to the custom map GraphDriverDataMap using the custom JABX adaptor GraphDriverDataMapAdapter. The map and JAXB adaptor is shared with the other bindings in the section.

Internal configuration

Logging

The project uses Log4j for logging. Each project which links to this project must provide a Log4j configuration which is accessible at runtime as a result of the build process.

For testing the project uses the Log4j configuration supplied by the pineapple-test-utils project.

Spring configuration file

The plugin contains a configuration file which defines a Spring application context. The Spring application context defines the input unmarshalling for the project. The file is located in src/main/resources/com.alpha.pineapple.docker-config.xml.

Minimal JSON marshalling

The Docker remote API favors invocation only with fields which are changed or defined with meaningful information. The Jackson marshaller used by the Spring REST template to marshall JSON is configured only to serialize non-null and non-default values when invoking a Docker host, using the serializationInclusion property:

<bean id="jacksonObjectMapper" class="com.fasterxml.jackson.databind.ObjectMapper">
        <property name="propertyNamingStrategy">                        
                <bean class="com.alpha.pineapple.docker.utils.UpperCaseStyleStrategy" />
        </property>
        <property name="serializationInclusion">
        <value type="com.fasterxml.jackson.annotation.JsonInclude.Include">NON_DEFAULT</value>
        </property>
</bean> 

Internationalization (I18N) configuration file

The report generator uses internationalization. Messages used by classes in the project are located in the file src/main/resources/com.alpha.pineapple.docker-messages.properties.

JAXB binding file

JAXB bindings file used during generation of model objects from the plugin schema is located at src/main/resources/bindings.xjb.

Test

Unit test

All test cases expects a Docker daemon at 192.168.99.11:8082. This is due to their usage of DockerHelper.createDefaultSession() to create a session. For more details, see the Pineapple Test Infrastructure.

Docker images

The system test cases within the project are based on the usage of a set of Docker images. CentOS is used as the OS due to its similarities to an Enterprise Linux like Red Hat enterprise Linux.

The root image is the CentOS image tianon/centos defined by the constant DockerTestConstants.TEST_DOCKER_ROOT_CENTOS_IMAGE. The root is image isn't intended to be used directly in test cases. The default image should be used in test cases.

The default image is defined as a tag of the root image. The default image is defined in the user repository pineapple_ci/centos. The image is defined by the constant DockerTestConstants.TEST_DOCKER_DEFAULT_CENTOS_IMAGE.

Implementation

Project constants

The package com.alpha.pineapple.docker is the root package of the project and contains the interface DockerConstants which constant used by the project.

Docker Client

The package com.alpha.pineapple.docker also contains the classes which defines the Docker client:

  • DockerClient is the interface for the Docker client API.
  • DockerClient is the implementation of the Docker client which implements a communication with Docker daemons using the Docker Remote API.
  • DockerClientExceptionException is an exception class for signaling errors in the Docker client.

Session class

The package com.alpha.pineapple.docker.session contains the session classes implement in the project:

  • DockertSession defines the interface for plugin session which handles the communication with Docker daemons using the REST API.
  • DockerSessionImpl extends the DockertSession interface and implements the communication layer using the Spring REST client RestTemplate.
Handling multiple JSON responses during creation of a Docker image

The method httpPostForObjectWithMultipleRootElements(..) is used to create a Docker image from the CreateImageCommand. The Docker REST API doesn't returns a valid JSON but a string containing multiple JSON responses.

RestTemplate configured with a Jackson message converter ins't able to parse the string. To parse the set of JSON responses in the string, the string is first transformed into a JSON array by:

  • The string is decorated with JSON array delimiters
  • All carriage returns and new line chars are removed.
  • A comma is add between every array entry.

The created JSON array is then marshalled by the Jackson JSON object mapper (the Spring bean is named jacksonObjectMapperForRestTemplateWithoutMessageConverters) into objects and returned.

Spring RestTemplate configuration

The project configures two instances of the Spring REST client RestTemplate.

One instance of RestTemplate is configured with the MappingJackson2HttpMessageConverter which supports marshalling of JSON using the Jackson library and the StringHttpMessageConverter which supports marshalling of string based messages in the HTTP response body.

The second instance of RestTemplate is configured without any message converters. This instance is used to parse responses from Docker isn't a valid JSON but a string containing multiple JSON responses. This RestTemplate instance is used in the DockertSessionImpl in the method httpPostForObjectWithMultipleRootElements(..)> used during creation of an image from the CreateImageCommand.

Error Handling

The package com.alpha.pineapple.docker.utils contains classes to improve the error handling from for RestTemlpate:

  • RestResponseErrorHandler which implements the ResponseErrorHandler interface to provide a customised error handler for exceptions returned by RestTemplate. The error handle captures the exception from RestTemplate and information from the HTTP response. The handler then throws a RestResponseException with all the collected data.
  • RestResponseException used to signal an error invoking REST request or received a response.
JSON marshalling

The package com.alpha.pineapple.docker.utils also contains helper classes used during marshalling JSON to objects:

  • CapitaliseStyleStrategy implements the Jackson PropertyNamingStrategy interface to provide a customised property naming strategy during marshalling. The strategy generates capitalised target attribute names in objects for for JSON attribute to be mapped to. The class is used by the RestTemplate> use to invoke the Docker API. Special cases:
    • If the target object attribute is ListedImage.id then the received JSON property Id is mapped to to the target attribute id.
    • If the target object attribute is CreatedContainer.id then the received JSON property Id is mapped to to the target attribute id.
    • If the target object attribute is HostConfig.utsMode then the received JSON property UTSMode is mapped to to the target attribute utsMode.
    • If the target object attribute is HostConfig.ioMaximumBandwidth then the received JSON property IOMaximumBandwidth is mapped to to the target attribute ioMaximumBandwidth.
    • If the target object attribute is HostConfig.ioMaximumIOps then the received JSON property IOMaximumIOps is mapped to to the target attribute ioMaximumIOps.
    • If the target object attribute is InspectedContainerNetworkSettings.ipAddress then the received JSON property IPAddress is mapped to to the target attribute ipAddress.
    • If the target object attribute is InspectedContainerNetworkSettings.ipPrefixLen then the received JSON property IPPrefixLen is mapped to to the target attribute ipPrefixLen.
    • If the target object attribute is InspectedContainerNetworkSettings.ipv6Gateway then the received JSON property IPv6Gateway is mapped to to the target attribute ipv6Gateway.
    • If the target object attribute is InspectedContainerNetworkSettings.endpointId then the received JSON property EndpointID is mapped to to the target attribute endpointId.
    • If the target object attribute is InspectedContainerNetworkSettings.networkId then the received JSON property NetworkID is mapped to to the target attribute networkId.
    • If the target object attribute is InspectedContainerNetworkSettings.sandboxId then the received JSON property SandboxID is mapped to to the target attribute sandboxId.
    • If the target object attribute is InspectedContainerNetworkSettingsNetworkValue.ipAddress then the received JSON property IPAddress is mapped to to the target attribute ipAddress.
    • If the target object attribute is InspectedContainerNetworkSettingsNetworkValue.ipPrefixLen then the received JSON property IPPrefixLen is mapped to to the target attribute ipPrefixLen.
    • If the target object attribute is InspectedContainerNetworkSettingsNetworkValue.ipv6Gateway then the received JSON property IPv6Gateway is mapped to to the target attribute ipv6Gateway.
    • If the target object attribute is InspectedContainerNetworkSettingsNetworkValue.endpointId then the received JSON property EndpointID is mapped to to the target attribute endpointId.
    • If the target object attribute is InspectedContainerNetworkSettingsNetworkValue.globalIpv6Address then the received JSON property GlobalIPv6Address is mapped to to the target attribute globalIpv6Address.
    • If the target object attribute is InspectedContainerNetworkSettingsNetworkValue.globalIpv6PrefixLen then the received JSON property GlobalIPv6PrefixLen is mapped to to the target attribute globalIpv6PrefixLen.
    • If the target object attribute is InspectedContainerNetworkSettingsNetworkValue.ipamConfig then the received JSON property IPAMConfig is mapped to to the target attribute ipamConfig.
    • If the target object attribute is *.ip then the received JSON property IP is mapped to to the target attribute ip.
    • If the target object attribute is InspectedContainerState.oomKilled then the received JSON property OOMKilled is mapped to to the target attribute oomKilled.
    • If the target object attribute is ListedContainer.imageId then the received JSON property ImageID is mapped to to the target attribute imageId.
    • If the target object attribute is Mount.rw then the received JSON property RW is mapped to to the target attribute rw.
  • MultipleRootElementsStyleStrategy implements the Jackson PropertyNamingStrategy interface to provide a customised property naming strategy during marshalling. The strategy DON'T capitalised target attribute names in objects for for JSON attribute to be mapped to. Instead it lets the property names be lower case since that is required to map JSON received by the Docker API. The class is used by the DockertSessionImpl.httpPostForObjectWithMultipleRootElements(..) to parse responses from Docker which doesn't contains a valid JSON but a string containing multiple JSON responses.

    Special cases:

    • If the target object attribute is JsonRawMessage.id then the received JSON property ID is mapped to to the target attribute id.

General utilities

The package com.alpha.pineapple.docker.utils also contains general utilities:

  • ModelUtils is a general helper class for querying Docker model objects.

Commands

The package com.alpha.pineapple.docker.command contains Chain commands which invokes REST services at the Docker daemons, the exact semantics of these services are described in the Docker Remote API documentation.

These commands are implemented:

  • BuildImageCommand creates a new Docker image from a Dockerfile.
    • CreateImageCommand creates a new Docker image either by pulling it from the registry or by importing it.
    • CreateTaggedImageCommand creates a tagged Docker image from an existing image.
    • DeleteImageCommand deletes a Docker image.
    • ListAllImagesCommand list all images in a Docker daemon.
    • CreateContainerCommand creates a Docker container from an base image.
    • DeleteContainerCommand deletes a Docker container.
    • KillContainerCommand kills a running Docker container.
    • StartContainerCommand starts a Docker container.
    • StopContainerCommand stops a Docker container.
    • PauseContainerCommand pauses a running container.
    • TestContainerCommand validates the container definition in a model with a container in a Docker host.
    • ReportOnImagesCommand creates a report of all images in a Docker host.
    • ReportOnContainersCommand creates a report of all containers in a Docker host.
    • InspectsContainerCommand returns information about a Docker container.
    • ListAllContainersCommand list all containers in a Docker daemon.
    • CreateTarArchiveCommand creates a TAR archive from a source directory.
BuildImageCommand

Command which can create a Docker image, from TAR archive which contains a DockerFile.

The command is invoked with a TAR archive (which must contain a Dockerfile in a root directory) and a ImageInfo object which is used to tag the image created from the Dockerfile.

CreateImageCommand

Command which can create a Docker image, either by pulling it from the registry or by importing it.

The command is invoked with a ImageInfo object which defines an image through a Docker repository and image tag.

Example of official repository name is ubuntu which holds Ubuntu images.

Example of user repository (which has the name format user/repo) is mrpono/pineapple.

Example of image tags are: latest and 12.10.

CreateTaggedImageCommand

Command which can create a Docker image from an existing image.

The command is invoked with:

  • Source ImageInfo object which defines an image through a Docker repository and image tag.
  • Target ImageInfo object which defines an image through a Docker repository and image tag. The value of the image tag is current ignored, since the created image will be created with the latest tag.

When the command is executes a Docker image is created in the repository named by the repository value in the target image info object. The image is created with the latest tag. The image is a tagged copy of the image defined in the source image object. The two images shares the same image ID.

Data transfer objects

The package com.alpha.pineapple.docker.model contains helper objects and data transfer objects (DTO) used as input to commands:

  • InfoBuilder is interface for building DTO's.
  • InfoBuilderImpl is the default implementation of the InfoBuilder interface.
  • ImageInfoImpl is the default implementation of the ImageInfo interface.
  • ImageInfo is interface for DTO which defines a Docker image.
  • ImageInfoImpl is the default implementation of the ImageInfo interface.
  • ContainerInfo is interface for DTO which defines a Docker container.
  • ContainerInfoImpl is the default implementation of the ContainerInfo interface.
  • ContainerInstanceInfo is interface for DTO which defines a Docker container instance.
  • ContainerInstanceInfoImpl is the default implementation of the ContainerInstanceInfo interface.

Support for customised JAXB bindings

The package com.alpha.pineapple.docker.model.jaxb contains objects for implementation of customised JAXB bindings:

  • StringMapMap custom map implementation. Used bind to the schema generated type StringMap into a map.
  • StringMapAdapter JAXB binding adapter. Implements binding of schema generated type StringMap to StringMapMap and back.
  • PortSetMap custom map implementation. Used bind to the schema generated type PortSet into a map.
  • PortSetMapAdapter JAXB binding adapter. Implements binding of schema generated type PortSet to PortSetMap and back.
  • PortMapMap custom map implementation. Used bind to the schema generated type PortMap into a map.
  • PortMapMapAdapter JAXB binding adapter. Implements binding of schema generated type PortMap to PortMapMap and back.
  • ContainerConfigurationLabelsMap custom map implementation. Used bind to the schema generated type ContainerConfigurationLabels, ContainerConfigurationLabels into a map.
  • ContainerConfigurationLabelsMapAdapter JAXB binding adapter. Implements binding of schema generated type ContainerConfigurationLabels to ContainerConfigurationLabelsMap and back.
  • ContainerConfigurationVolumesMap custom map implementation. Used bind to schema generated type ContainerConfigurationVolumes into a map.
  • ContainerConfigurationVolumesMapAdapter JAXB binding adapter. Implements binding of schema generated type ContainerConfigurationVolumes to ContainerConfigurationVolumesMap and back.

General test utilities

The package com.alpha.testutils contains general test utilities:

  • DockerTestHelper is a test helper class for using the Docker client.
  • DockerHelperException is an exception class for signaling errors in the Docker test helper.
  • LoggingRequestInterceptorImpl is an Implementation of the ClientHttpRequestInterceptor interface which supports logging of HTTP responses received by RestTemplate.
DockerHelper

When the createDefaultSession() method is invoked then a session to a Docker daemon at 192.168.99.11:8082 is created. For more details, see the Pineapple Test Infrastructure.