Supported tags and respective Dockerfile links

For detailed information about the published artifacts of each of the above supported tags (image metadata, transfer size, etc), please see the repos/vault directory in the docker-library/repo-info GitHub repo.

For more information about this image and its history, please see the relevant manifest file (library/vault). This image is updated via pull requests to the docker-library/official-images GitHub repo.


Vault is a tool for securely accessing secrets. A secret is anything that you want to tightly control access to, such as API keys, passwords, certificates, and more. Vault provides a unified interface to any secret, while providing tight access control and recording a detailed audit log. For more information, please see:

Using the Container

We chose Alpine as a lightweight base with a reasonably small surface area for security concerns, but with enough functionality for development and interactive debugging.

Vault always runs under dumb-init, which handles reaping zombie processes and forwards signals on to all processes running in the container. This binary is built by HashiCorp and signed with our GPG key, so you can verify the signed package used to build a given base image.

Running the Vault container with no arguments will give you a Vault server in development mode. The provided entry point script will also look for Vault subcommands and run vault with that subcommand. For example, you can execute docker run vault status and it will run the vault status command inside the container. The entry point also adds some special configuration options as detailed in the sections below when running the server subcommand. Any other command gets exec-ed inside the container under dumb-init.

The container exposes two optional VOLUMEs:

  • /vault/logs, to use for writing persistent audit logs. By default nothing is written here; the file audit backend must be enabled with a path under this directory.
  • /vault/file, to use for writing persistent storage data when using thefile data storage plugin. By default nothing is written here (a dev server uses an in-memory data store); the file data storage backend must be enabled in Vault’s configuration before the container is started.

The container has a Vault configuration directory set up at /vault/config and the server will load any HCL or JSON configuration files placed here by binding a volume or by composing a new image and adding files. Alternatively, configuration can be added by passing the configuration JSON via environment variable VAULT_LOCAL_CONFIG. Please note that due to a bug in the current release of Vault (0.6.0), you should not use the name local.json for any configuration file in this directory.

Memory Locking and ‘setcap’

The container will attempt to lock memory to prevent sensitive values from being swapped to disk and as a result must have --cap-add=IPC_LOCK provided to docker run. Since the Vault binary runs as a non-root user, setcap is used to give the binary the ability to lock memory. With some Docker storage plugins in some distributions this call will not work correctly; it seems to fail most often with AUFS. The memory locking behavior can be disabled by setting the SKIP_SETCAP environment variable to any non-empty value.

Running Vault for Development

        $ docker run --cap-add=IPC_LOCK -d --name=dev-vault vault


This runs a completely in-memory Vault server, which is useful for development but should not be used in production.

When running in development mode, two additional options can be set via environment variables:

  • VAULT_DEV_ROOT_TOKEN_ID: This sets the ID of the initial generated root token to the given value
  • VAULT_DEV_LISTEN_ADDRESS: This sets the IP:port of the development server listener (defaults to

As an example:

        $ docker run --cap-add=IPC_LOCK -e 'VAULT_DEV_ROOT_TOKEN_ID=myroot' -e 'VAULT_DEV_LISTEN_ADDRESS=' vault


Running Vault in Server Mode

        $ docker run --cap-add=IPC_LOCK -e 'VAULT_LOCAL_CONFIG={backend: {file: {path: /vault/file}}, default_lease_ttl: 168h, max_lease_ttl: 720h}' vault server


This runs a Vault server using the file storage backend at path /vault/file, with a default secret lease duration of one week and a maximum of 30 days.

Note the --cap-add=IPC_LOCK: this is required in order for Vault to lock memory, which prevents it from being swapped to disk. This is highly recommended. In a non-development environment, if you do not wish to use this functionality, you must add disable_mlock: true to the configuration information.

At startup, the server will read configuration HCL and JSON files from /vault/config (any information passed into VAULT_LOCAL_CONFIG is written into local.json in this directory and read as part of reading the directory for configuration files). Please see Vault’s configuration documentation for a full list of options.

Since 0.6.3 this container also supports the VAULT_REDIRECT_INTERFACE and VAULT_CLUSTER_INTERFACE environment variables. If set, the IP addresses used for the redirect and cluster addresses in Vault’s configuration will be the address of the named interface inside the container (e.g. eth0).


View license information for the software contained in this image.

Supported Docker versions

This image is officially supported on Docker version 17.04.0-ce.

Support for older versions (down to 1.6) is provided on a best-effort basis.

Please see the Docker installation documentation for details on how to upgrade your Docker daemon.

User Feedback


If you have any problems with or questions about this image, please contact us through a GitHub issue. If the issue is related to a CVE, please check for a cve-tracker issue on the official-images repository first.

You can also reach many of the official image maintainers via the #docker-library IRC channel on Freenode.


You are invited to contribute new features, fixes, or updates, large or small; we are always thrilled to receive pull requests, and do our best to process them as fast as we can.

Before you start to code, we recommend discussing your plans through a GitHub issue, especially for more ambitious contributions. This gives other contributors a chance to point you in the right direction, give you feedback on your design, and help you find out if someone else is working on the same thing.


Documentation for this image is stored in the vault/ directory of the docker-library/docs GitHub repo. Be sure to familiarize yourself with the repository’s file before attempting a pull request.

Add to wish list
Demo URL
Current Version
Last Update
Date Created
File Format(s)
File size
Compatible Platform
License Type
Support Options
Misc Info
Product Tags
More Questions
Change Log

You must log in and be a buyer of this download to submit a review.


Generic filters
Exact matches only



0 sales

Add to wish list

Download Categories: , , ,
Download Tag:


Demo URL

Your Cart


Sign up to stay tuned and receive special offers!

Subscribe to one or more email lists you want to receive:

You May Also Like

Copyright 2019


Sign Up

Enter your email and Password

Log In

Enter your Username or email and password

Reset Password

Enter your email to reset your password

<-- script type="text/javascript">jQuery('#qt_popup_close').on('click', ppppop);