ArangoDBEstimated reading time: 7 minutes
ArangoDB - a distributed database with a flexible data model for documents, graphs, and key-values.
GitHub repo: https://github.com/arangodb/arangodb-docker
Supported tags and respective
For detailed information about the published artifacts of each of the above supported tags (image metadata, transfer size, etc), please see the
repos/arangodb 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/arangodb). This image is updated via pull requests to the
docker-library/official-images GitHub repo.
What is ArangoDB?
The supported data models can be mixed in queries and allow ArangoDB to be the aggregation point for the data request you have in mind.
Key Features in ArangoDB
Multi-Model Documents, graphs and key-value pairs — model your data as you see fit for your application.
Joins Conveniently join what belongs together for flexible ad-hoc querying, less data redundancy.
Transactions Easy application development keeping your data consistent and safe. No hassle in your client.
Joins and Transactions are key features for flexible, secure data designs, widely used in RDBMSs that you won’t want to miss in NoSQL products. You decide how and when to use Joins and strong consistency guarantees, keeping all the power for scaling and performance as choice.
Furthermore, ArangoDB offers a microservice framework called Foxx to build your own Rest API with a few lines of code.
How to use this image
Start an ArangoDB instance
In order to start an ArangoDB instance run
unix> docker run -e ARANGO_RANDOM_ROOT_PASSWORD=1 -d --name arangodb-instance arangodb
Will create and launch the arangodb docker instance as background process. The Identifier of the process is printed. By default ArangoDB listen on port 8529 for request and the image includes
EXPOSE 8529. If you link an application container it is automatically available in the linked container. See the following examples.
In order to get the IP arango listens on run:
unix> docker inspect --format '' arangodb-instance
Using the instance
In order to use the running instance from an application, link the container
unix> docker run -e ARANGO_RANDOM_ROOT_PASSWORD=1 --name my-app --link arangodb-instance:db-link arangodb
This will use the instance with the name
arangodb-instance and link it into the application container. The application container will contain environment variables
DB_LINK_PORT_8529_TCP=tcp://172.17.0.17:8529 DB_LINK_PORT_8529_TCP_ADDR=172.17.0.17 DB_LINK_PORT_8529_TCP_PORT=8529 DB_LINK_PORT_8529_TCP_PROTO=tcp DB_LINK_NAME=/naughty_ardinghelli/db-link
These can be used to access the database.
Exposing the port to the outside world
If you want to expose the port to the outside world, run
unix> docker run -e ARANGO_RANDOM_ROOT_PASSWORD=1 -p 8529:8529 -d arangodb
ArangoDB listen on port 8529 for request and the image includes
-p 8529:8529 exposes this port on the host.
Choosing an authentication method
The ArangoDB image provides several authentication methods which can be specified via environment variables (-e) when using
Generate a random root password when starting. The password will be printed to stdout (may be inspected later using
Disable authentication. Useful for testing.
WARNING Doing so in production will expose all your data. Make sure that ArangoDB is not diretcly accessible from the internet!
Specify your own root password.
Command line options
In order to get a list of supported options, run
unix> docker run -e ARANGO_RANDOM_ROOT_PASSWORD=1 arangodb arangod --help
ArangoDB use the volume
/var/lib/arangodb3 as database directory to store the collection data and the volume
/var/lib/arangodb3-apps as apps directory to store any extensions. These directories are marked as docker volumes.
Please note that the old version 2.x used
/var/lib/arangodb-apps. We will refer to the 3.x variant in this document. In case you are starting a 2.x image just replace it with the 2.x variant.
docker inspect --format "" arangodb for all volumes.
Using host directories
You can map the container’s volumes to a directory on the host, so that the data is kept between runs of the container. This path
/tmp/arangodb is in general not the correct place to store you persistent files - it is just an example!
unix> mkdir /tmp/arangodb unix> docker run -e ARANGO_RANDOM_ROOT_PASSWORD=1 -p 8529:8529 -d \ -v /tmp/arangodb:/var/lib/arangodb3 \ arangodb
This will use the
/tmp/arangodb directory of the host as database directory for ArangoDB inside the container.
Using a data container
Alternatively you can create a container holding the data.
unix> docker create --name arangodb-persist arangodb true
And use this data container in your ArangoDB container.
unix> docker run -e ARANGO_RANDOM_ROOT_PASSWORD=1 --volumes-from arangodb-persist -p 8529:8529 arangodb
unix> docker run -d --name arangodb-persist -v /var/lib/arangodb3 busybox true
Using as a base image
If you are using the image as a base image please make sure to wrap any CMD in the exec form. Otherwise the default entrypoint will not do its bootstrapping work.
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.
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
arangodb/ directory of the
docker-library/docs GitHub repo. Be sure to familiarize yourself with the repository’s
README.md file before attempting a pull request.