Chapter 35. Docker

Docker Component

Available as of Camel 2.15
Camel component for communicating with Docker.
The Docker Camel component leverages the docker-java via the Docker Remote API.
Maven users will need to add the following dependency to their pom.xml for this component:
<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-docker</artifactId>
    <version>x.x.x</version>
    <!-- use the same version as your Camel core version -->
</dependency>

URI format

docker://[operation]?[options]
Where operation is the specific action to perform on Docker.

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
URI Option Header Property
containerId CamelDockerContainerId

General Options

The following parameters can be used with any invocation of the component
Option Header Description Default Value
host CamelDockerHost Mandatory: Docker host localhost
port CamelDockerPort Mandatory:Docker port 2375
username CamelDockerUserName User name to authenticate with
password CamelDockerPassword Password to authenticate with
email CamelDockerEmail Email address associated with the user
secure CamelDockerSecure Use HTTPS communication false
requestTimeout CamelDockerRequestTimeout Request timeout for response (in seconds) 30
certPath CamelDockerCertPath Location containing the SSL certificate chain

Consumer Operations

The consumer supports the following operations.
Operation Options Description Produces
events initialRange Monitor Docker events (Streaming) Event

Producer Operations

The following producer operations are available.
Misc Operation Options Description Returns
auth Check auth configuration
info System wide information Info
ping Ping the Docker server
version Show the docker version information Version
Image Operation Options Description Body Content Returns
image/list filter, showAll List images List<Image>
image/create repository Create an image InputStream CreateImageResponse
image/build noCache, quiet, remove, tag Build an image from Dockerfile via stdin InputStream or File InputStream
image/pull repository, registry, tag Pull an image from the registry InputStream
image/push name Push an image on the registry InputStream
image/search term Search for images List<SearchItem>
image/remove imageId Remove an image
image/tag imageId, repository, tag, force Tag an image into a repository
image/inspect imageId Inspect an image InspectImageResponse
Container Operation Options Description Body Content Returns
container/list showSize, showAll, before, since, limit, List containers initialRange List<Container>
container/create imageId, name, exposedPorts, workingDir, disableNetwork, hostname, user, tty, stdInOpen, stdInOnce, memoryLimit, memorySwap, cpuShares, attachStdIn, attachStdOut, attachStdErr, env, cmd, dns, image, volumes, volumesFrom Create a container CreateContainerResponse
container/start
containerId, binds, links, lxcConf, portBindings, privileged, publishAllPorts, dns, dnsSearch, volumesFrom, networkMode, devices, restartPolicy, capAdd, capDrop
Start a container
container/inspect containerId Inspect a container InspectContainerResponse
container/wait containerId Wait a container Integer
container/log containerId, stdOut, stdErr, timestamps, followStream, tailAll, tail Get container logs InputStream
container/attach containerId, stdOut, stdErr, timestamps, logs, followStream Attach to a container InputStream
container/stop containerId, timeout Stop a container
container/restart containerId, timeout Restart a container
container/diff containerId Inspect changes on a container ChangeLog
container/kill containerId, signal Kill a container
container/top containerId, psArgs List processes running in a container TopContainerResponse
container/pause containerId Pause a container
container/unpause containerId Unpause a container
container/commit containerId, repository, message, tag, attachStdIn, attachStdOut, attachStdErr, cmd, disableNetwork, pause, env, exposedPorts, hostname, memory, memorySwap, openStdIn, portSpecs, stdInOnce, tty, user, volumes, hostname Create a new image from a container's changes String
container/copyfile containerId, resource, hostPath Copy files or folders from a container InputStream
container/remove containerId, force, removeVolumes Remove a container

Examples

The following example consumes events from Docker:
from("docker://events?host=192.168.59.103&port=2375").to("log:event");
The following example queries Docker for system wide information
from("docker://info?host=192.168.59.103&port=2375").to("log:info");