docker #8

Supports: trusty


Deploys Docker Engine, a portable, lightweight runtime and packaging tool.

Docker Charm

Build Status

This charm provides Docker. Docker is an open platform for developers and sysadmins to build, ship, and run distributed applications. Consisting of Docker Engine, a portable, lightweight runtime and packaging tool, and Docker Hub, a cloud service for sharing applications and automating workflows, Docker enables apps to be quickly assembled from components and eliminates the friction between development, QA, and production environments

Did you know?

There's a full documentation site that serves as a manual/accompanyment to this charm. have a look at the Github Pages Docsite for more in-depth information about the charm, development patterns, and usage instructions.

Using the Docker Charm

Step by step instructions on using the Docker charm:

juju deploy cs:~lazypower/trusty/docker

Scale out Usage

Scaling out the Docker service is as simple as adding additional Docker units to expand your cluster. However, you will need an SDN solution to provide cross host networking. See the Known Limitations and issues about this.


  • latest : By default the charm assumes installation from the ubuntu repositories. If you wish to deploy the latest upstream Docker runtime enable this option.

  • version : String representation of the version you wish to deploy. This helps when scaling a cluster post deployment, to ensure you dont have mismatched versions deployed due to a new release

    juju set docker version=1.6.2

  • compose : Boolean representtion on if you wish to include docker compose to be installed during the installation of docker. This allows you to leverage a yaml file to spin up and manage multiple containers that comprise a single application stack.

  • aufs : new as of v0.1.6 Defaults the backend storage driver to AUFS. The older option of device mapper was horribly broken in most setups, and has been completely depreciated by the Docker foundation. Disable to keep the DeviceMapper backend. - Not recommended. note this will break existing containers if you upgrade existing setups. Ensure you account for this when upgrading your Docker clusters that are previously deployed with this charm.

    See blurb under Known Issues for migration instructions.

Known Limitations and Issues

AWS t1.micro

Performance will suffer on an AWS t1.micro unit - as it has such a limited amount of ram. Between the juju unit-agent, and the Docker daemon + workloads - you will only be able to run the smallest of deployments on them. Thus it is not recommended.

Local Provider Blockers

The Docker Charm will not work out of the box on the local provider. LXC containers are goverend by a very strict App Armor policy that prevents accidental misuses of privilege inside the container. Thus running the Docker Charm inside the local provider is not a supported deployment method.

Additional information will be made available after more research has been done on enabling the Docker charm to be deployed into a LXC container environment, and while unsupported it will outline the process to enable such scenarios for users that wish to test on the local provider.

Host Only Networking

By default, Docker deploys a host-only bridge adapter. Containers are able to communicate with one another if you forward host ports to the containers using the -p option. More on this in the Deploying Containers docpage.

There are other ways to enable cross-host communication using Supporting Charms that will enable an overlay-network - but are outside the scope of these help pages.

Offline Environments

There is no support for installation of the Docker service in offline environments. There is however a bug to track the progress of this feature.

AUFS Upgrade Stopped my containers from working

If you have older containers deployed and running, you will need to pause them and export. Once the tarballs of the containers have been exported - upgrade your cluster and reimport following the CLI instructions below as a guide

docker export <<container id>> > mycontainer-latest.tgz
# upgrade
docker import -i mycontainer-latest - mycontainer:latest
docker run <<options>> mycontainer:latest

Contact Information

Docker Upstream


(boolean) Change the backend storage driver from devicemapper to AUFS. The device mapper storage engine is known to be problematic, and AUFS is not enabled by default in Ubuntu. This will install AUFS support and swap the backend. **NOTE** It is not recommended to reconfigure this post deployment. You may incur dataloss.
(boolean) Install docker compose, the formation launch utility
(boolean) If True, deploy the latest version of docker, when False (default) installs from the Ubuntu package archive."
(string) When latest = true, specify the version to install from the PPA. latest = false will always assume use the current stable in distro.