docker #8

Supports: trusty
Add to new model


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

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.