[[docker-component]]
= Docker Component
//THIS FILE IS COPIED: EDIT THE SOURCE FILE:
:page-source: components/camel-docker/src/main/docs/docker-component.adoc
:docTitle: Docker
:artifactId: camel-docker
:description: Manage Docker containers.
:since: 2.15
:supportLevel: Stable
:component-header: Both producer and consumer are supported

*Since Camel {since}*

*{component-header}*

Camel component for communicating with Docker.

The Docker Camel component leverages the
https://github.com/docker-java/docker-java[docker-java] via the
https://docs.docker.com/reference/api/docker_remote_api[Docker Remote
API].


== URI format

[source,java]
------------------------------
docker://[operation]?[options]
------------------------------

Where *operation* is the specific action to perform on Docker.

== General Options

// component options: START
The Docker component supports 21 options, which are listed below.



[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Type
| *configuration* (common) | To use the shared docker configuration |  | DockerConfiguration
| *email* (common) | Email address associated with the user |  | String
| *host* (common) | *Required* Docker host | localhost | String
| *port* (common) | Docker port | 2375 | Integer
| *requestTimeout* (common) | Request timeout for response (in seconds) |  | Integer
| *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
| *lazyStartProducer* (producer) | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | boolean
| *basicPropertyBinding* (advanced) | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | boolean
| *cmdExecFactory* (advanced) | The fully qualified class name of the DockerCmdExecFactory implementation to use | com.github.dockerjava.netty.NettyDockerCmdExecFactory | String
| *followRedirectFilter* (advanced) | Whether to follow redirect filter | false | boolean
| *loggingFilter* (advanced) | Whether to use logging filter | false | boolean
| *maxPerRouteConnections* (advanced) | Maximum route connections | 100 | Integer
| *maxTotalConnections* (advanced) | Maximum total connections | 100 | Integer
| *parameters* (advanced) | Additional configuration parameters as key/value pairs |  | Map
| *serverAddress* (advanced) | Server address for docker registry. | https://index.docker.io/v1/ | String
| *socket* (advanced) | Socket connection mode | true | boolean
| *certPath* (security) | Location containing the SSL certificate chain |  | String
| *password* (security) | Password to authenticate with |  | String
| *secure* (security) | Use HTTPS communication | false | boolean
| *tlsVerify* (security) | Check TLS | false | boolean
| *username* (security) | User name to authenticate with |  | String
|===
// component options: END


// endpoint options: START
The Docker endpoint is configured using URI syntax:

----
docker:operation
----

with the following path and query parameters:

=== Path Parameters (1 parameters):


[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Type
| *operation* | *Required* Which operation to use. The value can be one of: events, stats, auth, info, ping, version, imagebuild, imagecreate, imageinspect, imagelist, imagepull, imagepushimageremove, imagesearch, imagetag, containerattach, containercommit, containercopyfile, containercreate, containerdiffinspectcontainer, containerkill, containerlist, containerlog, containerpause, containerrestart, containerremove, containerstartcontainerstop, containertop, containerunpause, containerwait, execcreate, execstart |  | DockerOperation
|===


=== Query Parameters (23 parameters):


[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Type
| *email* (common) | Email address associated with the user |  | String
| *host* (common) | *Required* Docker host | localhost | String
| *port* (common) | Docker port | 2375 | Integer
| *requestTimeout* (common) | Request timeout for response (in seconds) |  | Integer
| *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
| *exceptionHandler* (consumer) | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
| *exchangePattern* (consumer) | Sets the exchange pattern when the consumer creates an exchange. The value can be one of: InOnly, InOut, InOptionalOut |  | ExchangePattern
| *lazyStartProducer* (producer) | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | boolean
| *basicPropertyBinding* (advanced) | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | boolean
| *cmdExecFactory* (advanced) | The fully qualified class name of the DockerCmdExecFactory implementation to use | com.github.dockerjava.netty.NettyDockerCmdExecFactory | String
| *followRedirectFilter* (advanced) | Whether to follow redirect filter | false | boolean
| *loggingFilter* (advanced) | Whether to use logging filter | false | boolean
| *maxPerRouteConnections* (advanced) | Maximum route connections | 100 | Integer
| *maxTotalConnections* (advanced) | Maximum total connections | 100 | Integer
| *parameters* (advanced) | Additional configuration parameters as key/value pairs |  | Map
| *serverAddress* (advanced) | Server address for docker registry. | https://index.docker.io/v1/ | String
| *socket* (advanced) | Socket connection mode | true | boolean
| *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
| *certPath* (security) | Location containing the SSL certificate chain |  | String
| *password* (security) | Password to authenticate with |  | String
| *secure* (security) | Use HTTPS communication | false | boolean
| *tlsVerify* (security) | Check TLS | false | boolean
| *username* (security) | User name to authenticate with |  | String
|===
// endpoint options: END


== Header Strategy

All URI option can be passed as Header properties. Values found in a
message header take precedence over URI parameters. A header property
takes the form of a URI option prefixed with *CamelDocker* as shown
below

[width="100%",cols="50%,50%",options="header",]
|=======================================================================
|URI Option |Header Property

|containerId |CamelDockerContainerId
|=======================================================================


== Examples

The following example consumes events from Docker:

[source,java]
----------------------------------------------------------------------
from("docker://events?host=192.168.59.103&port=2375").to("log:event");
----------------------------------------------------------------------

The following example queries Docker for system wide information

[source,java]
-------------------------------------------------------------------
from("docker://info?host=192.168.59.103&port=2375").to("log:info");
-------------------------------------------------------------------


== Dependencies

To use Docker in your Camel routes you need to add a dependency on
*camel-docker*, which implements the component.

If you use Maven you can just add the following to your pom.xml,
substituting the version number for the latest and greatest release (see
the download page for the latest versions).

[source,java]
-------------------------------------
<dependency>
  <groupId>org.apache.camel</groupId>
  <artifactId>camel-docker</artifactId>
  <version>x.x.x</version>
</dependency>
-------------------------------------

include::camel-spring-boot::page$docker-starter.adoc[]
