Use Containers to setup build agents, without any constraint on images
you can use.

## Objectives

\- \[✓\] use ANY docker image, without any jenkins-specific prerequisite

\- \[✓\] no SSHD inside container, no JNLP port exposed over the
Internet

\- \[✓\] compose your build *à la* docker-compose with a main build
container and sidecar containers for test database, selenium browser,
etc

\- \[✓\] define container used for the build as a Dockerfile stored in
project SCM - aka "*continuous delivery as code*"

\- \[✓\] support Pipeline

\- \[✓\] rely on docker volumes to offer workspace persistence between
builds

\- \[✓\] extensibility for various docker hosting solutions

## Configuration

In your jobs, new option let you define your build environment as a
combination of Docker images / Dockerfiles   
![](docs/images/Capture_d’écran_2015-09-25_à_17.10.26.png)

## History

###### 1.0.2

Fix support for Docker host credentials  
Add support for docker socket bind mount via a dedicated binding
container. This let you run \`docker build\` from your build container

###### 1.0.1

Plugin has been moved to jenkinsci github organization so we can publish
it in public update center

###### 0.5 - proof of concept

This version has been released at DevoxxFrance while we demonstrated the
plugin, so people can give it a try and let us know if it was useful

## Why ?

Why (yet another) Docker plugin ?

Most plugins around use docker as a lightweight virtual machine, but
don't embrace containers paradigm shift and how they impact CI/CD. 

This plugin has been designed as a pure experiment during [Docker Global
Hack Day](https://www.docker.com/community/hackathon). It's under active
development. Plugin authors are CloudBees employees, but the plugin
isn't a CloudBees product, please consider this as individuals public
experiment.

## Read more on [https://dockins.github.io](http://dockins.github.io/)

[http://dockins.github.io](http://dockins.github.io/)
![](https://avatars3.githubusercontent.com/u/19631904?v=3&s=500)

**Diagnostic**

If something goes wrong (sic), please first run Jenkins master with
`-Dit.dockins.dockerslaves.spi.DockerDriver.verbose=true` . This will
dump in build log all docker commands ran by the plugin and help us
understand the issue.

Then, ask for assistance on jenkins-users mailing list and/or report a
bug on [https://issues.jenkins-ci.org](https://issues.jenkins-ci.org/)

## Future

There's many possible improvements / features we'd like to experiment.

-   integrate with Pipeline plugin, especially replace DurableTask by a
    docker based implementation, running docker commands detached (-d)
    and polling using docker API for execution status. Would need some
    way to replace the `sh` step execution
-   consider using a java based docker client for Docker API, so we
    don't rely on running external commands (and related threads usage)
-   integrate with docker orchestrators (amazon ECS, Kubernetes, Hyper\_
    ...) as an alternative backend
-   offer isolated Docker host per build, typically relying on docker
    inside LXD containers.
-   Let build use of docker as part of the build (i.e. bind mount
    docker.sock in build container)
-   experiment with docker volume plugins (flocker) for workspace
    snapshoting and offline browsing of the exact workspace for a
    specific build.
-   experiment pipeline support for volumes
-   support docker 1.12 swarm mode
    [JENKINS-38203](https://issues.jenkins-ci.org/browse/JENKINS-38203)
-   expose docker.sock so build can run \`doker build\` (aka
    "inception")
    [JENKINS-37088](https://issues.jenkins-ci.org/browse/JENKINS-37088)