---
title: Charmhub | Deploy Docker Registry using Charmhub - The Open Operator Collection
description: Deploy the latest version of Docker Registry on any cloud.
url: https://charmhub.io/docker-registry/configurations
---

# Docker Registry

[Canonical Kubernetes](https://charmhub.io/publisher/containers "View all packages from Canonical Kubernetes")

* [Canonical Kubernetes](https://charmhub.io/publisher/containers "View all packages from Canonical Kubernetes")

Platform:

jammy

24.04

22.04

20.04

18.04

16.04

stable 95bea90

```
juju deploy docker-registry
```

[Learn to deploy on juju >](https://juju.is/docs/juju/manage-applications)

* [apt-key-server](https://charmhub.io/docker-registry/configurations#apt-key-server)
* [auth-basic-password](https://charmhub.io/docker-registry/configurations#auth-basic-password)
* [auth-basic-user](https://charmhub.io/docker-registry/configurations#auth-basic-user)
* [auth-token-issuer](https://charmhub.io/docker-registry/configurations#auth-token-issuer)
* [auth-token-realm](https://charmhub.io/docker-registry/configurations#auth-token-realm)
* [auth-token-root-certs](https://charmhub.io/docker-registry/configurations#auth-token-root-certs)
* [auth-token-service](https://charmhub.io/docker-registry/configurations#auth-token-service)
* [cache-password](https://charmhub.io/docker-registry/configurations#cache-password)
* [cache-remoteurl](https://charmhub.io/docker-registry/configurations#cache-remoteurl)
* [cache-username](https://charmhub.io/docker-registry/configurations#cache-username)
* [cuda\_repo](https://charmhub.io/docker-registry/configurations#cuda_repo)
* [daemon-opts](https://charmhub.io/docker-registry/configurations#daemon-opts)
* [debug-port](https://charmhub.io/docker-registry/configurations#debug-port)
* [docker-ce-package](https://charmhub.io/docker-registry/configurations#docker-ce-package)
* [docker-opts](https://charmhub.io/docker-registry/configurations#docker-opts)
* [docker\_runtime](https://charmhub.io/docker-registry/configurations#docker_runtime)
* [docker\_runtime\_key\_url](https://charmhub.io/docker-registry/configurations#docker_runtime_key_url)
* [docker\_runtime\_package](https://charmhub.io/docker-registry/configurations#docker_runtime_package)
* [docker\_runtime\_repo](https://charmhub.io/docker-registry/configurations#docker_runtime_repo)
* [enable-cgroups](https://charmhub.io/docker-registry/configurations#enable-cgroups)
* [extra\_packages](https://charmhub.io/docker-registry/configurations#extra_packages)
* [http-host](https://charmhub.io/docker-registry/configurations#http-host)
* [http\_proxy](https://charmhub.io/docker-registry/configurations#http_proxy)
* [https\_proxy](https://charmhub.io/docker-registry/configurations#https_proxy)
* [install\_from\_upstream](https://charmhub.io/docker-registry/configurations#install_from_upstream)
* [install\_keys](https://charmhub.io/docker-registry/configurations#install_keys)
* [install\_sources](https://charmhub.io/docker-registry/configurations#install_sources)
* [log-level](https://charmhub.io/docker-registry/configurations#log-level)
* [nagios\_context](https://charmhub.io/docker-registry/configurations#nagios_context)
* [nagios\_servicegroups](https://charmhub.io/docker-registry/configurations#nagios_servicegroups)
* [no\_proxy](https://charmhub.io/docker-registry/configurations#no_proxy)
* [nvidia-container-runtime-package](https://charmhub.io/docker-registry/configurations#nvidia-container-runtime-package)
* [nvidia-docker-package](https://charmhub.io/docker-registry/configurations#nvidia-docker-package)
* [package\_status](https://charmhub.io/docker-registry/configurations#package_status)
* [prometheus-metrics](https://charmhub.io/docker-registry/configurations#prometheus-metrics)
* [registry-http-proxy](https://charmhub.io/docker-registry/configurations#registry-http-proxy)
* [registry-https-proxy](https://charmhub.io/docker-registry/configurations#registry-https-proxy)
* [registry-image](https://charmhub.io/docker-registry/configurations#registry-image)
* [registry-name](https://charmhub.io/docker-registry/configurations#registry-name)
* [registry-port](https://charmhub.io/docker-registry/configurations#registry-port)
* [storage-cache](https://charmhub.io/docker-registry/configurations#storage-cache)
* [storage-delete](https://charmhub.io/docker-registry/configurations#storage-delete)
* [storage-read-only](https://charmhub.io/docker-registry/configurations#storage-read-only)
* [storage-redirect-disable](https://charmhub.io/docker-registry/configurations#storage-redirect-disable)
* [storage-s3-accelerate](https://charmhub.io/docker-registry/configurations#storage-s3-accelerate)
* [storage-s3-accesskey](https://charmhub.io/docker-registry/configurations#storage-s3-accesskey)
* [storage-s3-bucket](https://charmhub.io/docker-registry/configurations#storage-s3-bucket)
* [storage-s3-chunksize](https://charmhub.io/docker-registry/configurations#storage-s3-chunksize)
* [storage-s3-encrypt](https://charmhub.io/docker-registry/configurations#storage-s3-encrypt)
* [storage-s3-forcepathstyle](https://charmhub.io/docker-registry/configurations#storage-s3-forcepathstyle)
* [storage-s3-keyid](https://charmhub.io/docker-registry/configurations#storage-s3-keyid)
* [storage-s3-loglevel](https://charmhub.io/docker-registry/configurations#storage-s3-loglevel)
* [storage-s3-multipartcopychunksize](https://charmhub.io/docker-registry/configurations#storage-s3-multipartcopychunksize)
* [storage-s3-multipartcopymaxconcurrency](https://charmhub.io/docker-registry/configurations#storage-s3-multipartcopymaxconcurrency)
* [storage-s3-multipartcopythresholdsize](https://charmhub.io/docker-registry/configurations#storage-s3-multipartcopythresholdsize)
* [storage-s3-objectacl](https://charmhub.io/docker-registry/configurations#storage-s3-objectacl)
* [storage-s3-region](https://charmhub.io/docker-registry/configurations#storage-s3-region)
* [storage-s3-regionendpoint](https://charmhub.io/docker-registry/configurations#storage-s3-regionendpoint)
* [storage-s3-rootdirectory](https://charmhub.io/docker-registry/configurations#storage-s3-rootdirectory)
* [storage-s3-secretkey](https://charmhub.io/docker-registry/configurations#storage-s3-secretkey)
* [storage-s3-secure](https://charmhub.io/docker-registry/configurations#storage-s3-secure)
* [storage-s3-skip-v4-auth](https://charmhub.io/docker-registry/configurations#storage-s3-skip-v4-auth)
* [storage-s3-skip-verify](https://charmhub.io/docker-registry/configurations#storage-s3-skip-verify)
* [storage-s3-storageclass](https://charmhub.io/docker-registry/configurations#storage-s3-storageclass)
* [storage-s3-usedualstack](https://charmhub.io/docker-registry/configurations#storage-s3-usedualstack)
* [storage-s3-useragent](https://charmhub.io/docker-registry/configurations#storage-s3-useragent)
* [storage-swift-authurl](https://charmhub.io/docker-registry/configurations#storage-swift-authurl)
* [storage-swift-container](https://charmhub.io/docker-registry/configurations#storage-swift-container)
* [storage-swift-domain](https://charmhub.io/docker-registry/configurations#storage-swift-domain)
* [storage-swift-password](https://charmhub.io/docker-registry/configurations#storage-swift-password)
* [storage-swift-region](https://charmhub.io/docker-registry/configurations#storage-swift-region)
* [storage-swift-tenant](https://charmhub.io/docker-registry/configurations#storage-swift-tenant)
* [storage-swift-username](https://charmhub.io/docker-registry/configurations#storage-swift-username)
* [tls-ca-blob](https://charmhub.io/docker-registry/configurations#tls-ca-blob)
* [tls-ca-path](https://charmhub.io/docker-registry/configurations#tls-ca-path)
* [tls-cert-blob](https://charmhub.io/docker-registry/configurations#tls-cert-blob)
* [tls-cert-path](https://charmhub.io/docker-registry/configurations#tls-cert-path)
* [tls-key-blob](https://charmhub.io/docker-registry/configurations#tls-key-blob)
* [tls-key-path](https://charmhub.io/docker-registry/configurations#tls-key-path)

[Learn about configurations >](https://juju.is/docs/juju/configuration#heading--application-configuration)

* apt-key-server | string

  Default: hkp://keyserver.ubuntu.com:80

  APT Key Server
* auth-basic-password | string

  Password for basic (htpasswd) authentication. Set this to something
  other than an empty string to configure basic auth for the registry.
* auth-basic-user | string

  Default: admin

  Username for basic (htpasswd) authentication.
* auth-token-issuer | string

  The name on the certificate that authentication tokens must me signed by.
* auth-token-realm | string

  The location from which clients should fetch authentication tokens.
* auth-token-root-certs | string

  The root certificate bundle (base64 encoded) for the authentication tokens.
* auth-token-service | string

  The name of the server which authentication tokens will be addressed to.
* cache-password | string

  Password for the remote registry when configured as a pull-through cache.
* cache-remoteurl | string

  Configures the registry as a pull through cache of the registry at the
  given url. See https://docs.docker.com/registry/recipes/mirror/ for more
  information the limitations of this mode.
* cache-username | string

  Username for the remote registry when configured as a pull-through cache.
* cuda\_repo | string

  Default: 10.0.130-1

  The cuda-repo package version to install.
* daemon-opts | string

  Default: {
  "log-driver": "json-file",
  "log-opts": {
  "max-size": "10m",
  "max-file": "100"
  }
  }

  Docker daemon configuration options, in json format, which are written
  directly to `/etc/docker/daemon.json`.

  Prefer to use this instead of `docker-opts`. While the two can
  be used together, care should be taken to not specify the same option
  in both places. Doing so will cause the Docker daemon to exit with an
  error.

  More info about available options can be found at
  https://docs.docker.com/engine/reference/commandline/dockerd/#daemon-configuration-file
* debug-port | int

  Default: 5001

  The external port on which the docker registry debug server listens.
* docker-ce-package | string

  Default: docker-ce=5:18.09.1~3-0~ubuntu-bionic

  The pinned version of docker-ce package installed with nvidia-docker.
* docker-opts | string

  Docker daemon command line arguments that are passed to `dockerd` when
  it starts, e.g. `--insecure-registry`.

  Prefer to use `daemon-opts` instead of this. See the `daemon-opts`
  description for more info.
* docker\_runtime | string

  Default: auto

  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).
* docker\_runtime\_key\_url | string

  Custom Docker repository validation key URL.
* docker\_runtime\_package | string

  Custom Docker repository package name.
* docker\_runtime\_repo | string

  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}] https://download.docker.com/linux/ubuntu {CODE} stable`.
* enable-cgroups | boolean

  Enable GRUB cgroup overrides cgroup\_enable=memory swapaccount=1. WARNING
  changing this option will reboot the host - use with caution on production
  services.
* extra\_packages | string

  Space separated list of extra deb packages to install.
* http-host | string

  The external URL where the docker registry is hosted. This URL will
  be prepended to all locations generated by the docker registry to
  ensure that those URLs are reachable by the client. For example
  "https://example.com/docker-registry/". Any path component must
  include a trailing "/". If this is not configured then the docker
  registry will derive its location from the incoming requests.
* 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.
* install\_from\_upstream | boolean

  Toggle installation from Ubuntu archive vs the Docker PPA (DEPRECATED; please use docker\_runtime instead).
* install\_keys | string

  List of signing keys for install\_sources package sources, per charmhelpers standard format (a yaml list of strings encoded as a string). The keys should be the full ASCII armoured GPG public keys. While GPG key ids are also supported and looked up on a keyserver, operators should be aware that this mechanism is insecure. null can be used if a standard package signing key is used that will already be installed on the machine, and for PPA sources where the package signing key is securely retrieved from Launchpad.
* install\_sources | string

  List of extra apt sources, per charm-helpers standard format (a yaml list of strings encoded as a string). Each source may be either a line that can be added directly to sources.list(5), or in the form ppa:<user>/<ppa-name> for adding Personal Package Archives, or a distribution component to enable.
* log-level | string

  Default: info

  Logging output level ('error', 'warn', 'info', or 'debug').
* nagios\_context | string

  Default: juju

  Used by the nrpe subordinate charms.
  A string that will be prepended to instance name to set the host name
  in nagios. So for instance the hostname would be something like:
  juju-myservice-0
  If you're running multiple environments with the same services in them
  this allows you to differentiate between them.
* nagios\_servicegroups | string

  A comma-separated list of nagios servicegroups.
  If left empty, the nagios\_context will be used as the servicegroup
* no\_proxy | string

  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.
* nvidia-container-runtime-package | string

  Default: nvidia-container-runtime=2.0.0+docker18.09.1-1

  The pinned version of nvidia-container-runtime package.
* nvidia-docker-package | string

  Default: nvidia-docker2=2.0.3+docker18.09.1-1

  The pinned version of nvidia-docker2 package.
* package\_status | string

  Default: install

  The status of service-affecting packages will be set to this value in the dpkg database. Valid values are "install" and "hold".
* prometheus-metrics | boolean

  Enable/disable prometheus metrics.
* registry-http-proxy | string

  The HTTP proxy the registry server should use to access the upstream registry.
* registry-https-proxy | string

  The HTTPS proxy the registry server should use to access the upstream registry.
* registry-image | string

  Default: registry:2

  Registry image.
* registry-name | string

  Default: registry

  Name of the registry container.
* registry-port | int

  Default: 5000

  The external port on which the docker registry listens.
* storage-cache | string

  Default: inmemory

  Cache provider for image layer metadata. Valid options are "inmemory" or
  "disabled".
* storage-delete | boolean

  Enable/disable the "delete" storage option. False, the default, disables
  this option in the registry config file.
* storage-read-only | boolean

  Enable/disable the "readonly" storage maintenance option. False, the
  default, disables this option in the registry config file.
* storage-redirect-disable | boolean

  Default: True

  For backends that support it(swift, s3), redirecting is disabled by default.
  All data routed through the Registry, rather than redirecting to the backend.
  If you want to redirect client requests directly to content storage,
  set this option to false.
* storage-s3-accelerate | boolean

  Enable S3 transfer acceleration for faster transfers of files over
  long distances.
* storage-s3-accesskey | string

  S3 storage access key. More info about S3 storage configuration could be found here:
  https://distribution.github.io/distribution/storage-drivers/s3/ .
* storage-s3-bucket | string

  The bucket name in which you want to store the registry’s data.
* storage-s3-chunksize | int

  Default: 10485760

  The S3 API requires multipart upload chunks to be at least 5MB.
  This value should be a number that is larger than 5 \* 1024 \* 1024.
* storage-s3-encrypt | boolean

  Specifies whether the registry stores the image in encrypted format or not.
* storage-s3-forcepathstyle | boolean

  To enable path-style addressing when the value is set to "true".
* storage-s3-keyid | string

  Optional KMS key ID to use for encryption
  (encrypt must be true, or this parameter is ignored).
* storage-s3-loglevel | string

  Default: off

  Valid values are: off (default), debug, debugwithsigning, debugwithhttpbody,
  debugwithrequestretries, debugwithrequesterrors and debugwitheventstreambody.
  See the AWS SDK for Go API reference for details:
  https://docs.aws.amazon.com/sdk-for-go/api/aws/#LogLevelType
* storage-s3-multipartcopychunksize | int

  Default: 33554432

  The default chunk size for all but the last Upload Part in the S3 Multipart Upload
  operation when copying stored objects.
* storage-s3-multipartcopymaxconcurrency | int

  Default: 100

  The default maximum number of concurrent Upload Part operations in the
  S3 Multipart Upload when copying stored objects.
* storage-s3-multipartcopythresholdsize | int

  Default: 33554432

  The default S3 object size above which multipart copy will be used when copying the
  object. Otherwise the object is copied with a single S3 API operation.
* storage-s3-objectacl | string

  Default: private

  The canned object ACL to be applied to each registry object.
  If you are using a bucket owned by another AWS account, it is recommended that you set this
  to "bucket-owner-full-control" so that the bucket owner can access your objects.
  Other valid options are available in the AWS S3 documentation:
  https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl
* storage-s3-region | string

  The region containing the S3 service.
* storage-s3-regionendpoint | string

  Endpoint for S3 compatible storage services (Minio, etc).
* storage-s3-rootdirectory | string

  The root directory tree in which all registry files are stored.
* storage-s3-secretkey | string

  S3 storage secret key.
* storage-s3-secure | boolean

  Default: True

  Indicates whether to use HTTPS instead of HTTP.
* storage-s3-skip-v4-auth | boolean

  Default: True

  Indicates whether the registry uses Version 4 of AWS’s authentication.
* storage-s3-skip-verify | boolean

  Skips TLS verification when the value is set to "true".
* storage-s3-storageclass | string

  Default: STANDARD

  The storage class applied to each registry file.
  Valid options are STANDARD and REDUCED\_REDUNDANCY.
* storage-s3-usedualstack | boolean

  Use AWS dual-stack API endpoints which support requests to
  S3 buckets over IPv6 and IPv4.
* storage-s3-useragent | string

  The User-Agent header value for S3 API operations.
* storage-swift-authurl | string

  The URL of the keystone used to authenticate to swift.
* storage-swift-container | string

  Default: docker-registry

  The name of the swift container that will hold the images.
* storage-swift-domain | string

  OpenStack Identity v3 API domain.
* storage-swift-password | string

  The password to use to access swift.
* storage-swift-region | string

  The region containing the swift service.
* storage-swift-tenant | string

  The tenant containing the swift service.
* storage-swift-username | string

  The username to use to access swift.
* tls-ca-blob | string

  Base64 encoded TLS CA certificate (overwrites tls-cert-path file).
* tls-ca-path | string

  Default: /etc/docker/registry/ca.crt

  Path to the TLS CA certificate.
* tls-cert-blob | string

  Base64 encoded TLS certificate (overwrites tls-cert-path file).
* tls-cert-path | string

  Default: /etc/docker/registry/registry.crt

  Path to the TLS certificate.
* tls-key-blob | string

  Base64 encoded TLS certificate private key (overwrites tls-key-path file).
* tls-key-path | string

  Default: /etc/docker/registry/registry.key

  Path to the TLS certificate private key.
