Docker charm

This subordinate charm deploys the Docker engine within a running Juju charm application. Docker is an open platform for developers and sysadmins to build, ship, and run distributed applications in containers.

Docker containers wrap a piece of software in a complete file system that contains everything needed to run an application on a server.

Docker focuses on distributing applications as containers that can be quickly assembled from components that are run the same on different servers without environmental dependencies. This eliminates the friction between development, QA, and production environments.


The following states are set by this subordinate:

  • endpoint.{relation name}.available

    This state is set when docker is available for use.

Using the Docker subordinate charm

The Docker subordinate charm is to be used with principal charms that need a container runtime. To use, we deploy the Docker subordinate charm and then relate it to the principal charm.

juju deploy cs:~containers/docker
juju add-relation docker [principal charm]

Scale out Usage

This charm will automatically scale out with the principal charm.


name type Default Description

| apt-key-server | string | See notes | APT Key Server |

| cuda_repo | string | 10.0.130-1 | The cuda-repo package version to install. |

| custom-registry-ca | string | | Base64 encoded Certificate Authority (CA) bundle. Setting this config allows container runtimes to pull images from registries with TLS certificates signed by an external CA. |

| disable-juju-proxy | boolean | False | Ignore juju-http(s) proxy settings on this charm. If set to true, all juju https proxy settings will be ignored |

| docker-ce-package | string | See notes | The pinned version of docker-ce package installed with nvidia-docker. |

| docker-logins | string | [] | See notes |

| docker-opts | string | | Extra options to pass to the Docker daemon. e.g. --insecure-registry. |

| docker_runtime | string | auto | See notes |

| docker_runtime_key_url | string | | Custom Docker repository validation key URL. |

| docker_runtime_package | string | | Custom Docker repository package name. |

| docker_runtime_repo | string | | See notes |

| enable-cgroups | boolean | False | Enable GRUB cgroup overrides cgroup_enable=memory swapaccount=1. WARNING changing this option will reboot the host - use with caution on production services. |

| http_proxy | string | | URL to use for HTTP_PROXY to be used by Docker. Useful in egress-filtered environments where a proxy is the only option for accessing the registry to pull images. |

| https_proxy | string | | URL to use for HTTPS_PROXY to be used by Docker. Useful in egress-filtered environments where a proxy is the only option for accessing the registry to pull images. |

| no_proxy | string | | See notes |

| nvidia-container-runtime-package | string | See notes | The pinned version of nvidia-container-runtime package. |

| nvidia-docker-package | string | See notes | The pinned version of nvidia-docker2 package. |




Back to table




Back to table



Docker login credentials. Setting this config allows Kubelet to pull images from registries where auth is required.

The value for this config must be a JSON array of credential objects, like this: [{"server": "my.registry", "username": "myUser", "password": "myPass"}]

Back to table



Docker runtime to install valid values are "upstream" (Docker PPA), "nvidia" (Nvidia PPA), "apt" (Ubuntu archive), "auto" (Nvidia PPA or Ubuntu archive, based on your hardware), or "custom" (must have set docker_runtime_repo URL, docker_runtime_key_url URL and docker_runtime_package name).

Back to table



Custom Docker repository, given in deb format. Use {ARCH} to determine architecture at runtime. Use {CODE} to set release codename. E.g. deb [arch={ARCH}] {CODE} stable.

Back to table



Comma-separated list of destinations (either domain names or IP addresses) which should be accessed directly, rather than through the proxy defined in http_proxy or https_proxy. Must be less than 2023 characters long.

Back to table




Back to table




Back to table

Docker Compose

This charm also installs the 'docker-compose' python package using pip. So once the charm has finished installing you have the ability to use Docker Compose functionality such as control files, and logging.

  • The Docker homepage
  • Docker documentation for help with Docker commands.
  • Docker forums for community discussions.
  • Check the Docker issue tracker for bugs or problems with the Docker software.
  • The charm-docker is the GitHub repository that contains the reactive code to build this Charm.
  • Check the charm-docker issue-tracker for bugs or problems related to the Charm.