Six Ready-made NoSQL Database Docker Images

19 Nov 2015

NoSQL is an umbrella term for a whole category of databases, many different in their featuresets, but united in that they depart in some way from the relational model used by databases such as MySQL and PostgreSQL.

In this post, we cover six ready-made NoSQL database Docker images.

For each image, we address some of the current bugs, and offer potential workarounds.

Rethink DB

RethinkDB is an OSS project built to store JSON documents and has been designed with horizontal scalability in mind. RethinkDB supports functions, table joins, aggregations, and groupings to bolster its native query language, ReQL.

ReQL differs from other query languages in that, rather than constructing strings for a query engine, developers work with ReQL via chainable methods directly from their programming language of choice. As well as being a easy to learn, this also mitigates against the posibility of injection attacks.


When working in Kubernetes, you may run into some troubles with Google Compute Engine Persistent Disks (GCE PD).

This issue is presently unconfirmed.


ArangoDB is a scalable, multi-model OSS database with flexible data models for documents, key-values, and graphing.

ArangoDB allows users to query via Javascript extensions or AQL, ArangoDB’s native query language. AQL is a declarative language, meaning queries express what result should be achieved but not how they should be achieved.


If working with ArangoDB behind a proxy, you will encounter an error when attempting to update Foxx from within the container. Foxx is a JavaScript framework that allows you to write rich data-centric microservices for ArangoDB.

Foxx and ArangoDB do not currently offer proxy support, though a feature request has been opened on GitHub for this. Using a transparent proxy to build and update ArangoDB containers is the recommended workaround.


Aerospike is an OSS distributed database, built on a shared-nothing architecture with automatic fail-over and cross data-center synchronization. Aerospike offers its users a variety of tools, including its own query language, backup manager, cluster health monitor, CLI, and log latency management tool.

Aerospike is a key-value store with a schema-less data model, which provides a lot of flexibility for data sets that are unpredictable, diverse, or change regularly. However, data still needs to be structured consistently so quering and aggregation can be done.


When using the Aerospike CLI tools within Docker, you may experience a bug where the CLI will fail on a record. Upon calling a test, the record will appear to complete the check, showing the current host status as good.

However, the test will fail to compile after it is run, throwing a error like this:

Transaction did not complete for some reason:  unpack_from requires a buffer of at least 151 bytes
Marking bad:  BB998DEDB722AB8   ('', 3000)
cluster says: no good hosts, really
 failing request because no good hosts
no data retrieved

There is no workaround currently available for this issue.

When working with Aerospike tools within Docker, users should be aware of potential conflicts that may arise.


Couchbase is another OSS database offering a schema-less key-value store.

Couchbase is not supported for nodes that are behind a NAT. As such, Docker’s default network configuration is not ideal for Couchbase. However, running single Couchbase containers on multiple hosts is possible, with each node running a dedicated server.

Running multiple hosts across multiple servers is difficult to accomplish with a traditional Docker setup, though Couchbase can be configured with applications such as Weave or Flannel to accomplish this if it is necessary.


When working with Couchbase in Docker on CoreOS, you may experience an issue where docker run will throw an error while setting up a cluster.

FindLiveNode returned err: Error getting key. Err: 100: Key not found (/ [14376] or empty ip
Sleeping 90 seconds

This error will repeat with increasing sleep lengths. Using the latest Couchbase image rather than the Docker default image of Couchbase 4.0 seems to partially fix this issue. However, there is no complete fix currently available.


Redis is a popular in-memory key-value NoSQL database supporting a multitude of data structures, like strings, hashes, lists, sets, and stored sets. Redis also provides high-availability via Redis Sentinel. Sentinel features automatic fail-over, monitoring, and configuration of services.


If you are using Ansible to run a Redis service from within Docker, you need to pay attention to your container’s ports. If ports are not correctly configured, when starting a Redis service via Docker, you will receive a Connection refused error.


MongoDB is an OSS NoSQL database offering flexible data models, pluggable storage architecture, scalability, and more.

Like other document-oriented non-relational databases, MongoDB documents typically encapsulate all the data related to a specific thing, instead of spreading it across multiple tables or entries. This is beneficial, as it makes database design and querying easier for certain types of data.


If you’re running two Docker containers, one for the data volume and one for the daemon, you may encounter issues trying to use docker-machine ssh to run mongodump in a single step from outside of a container.

One solution is to to spin up a new container specifically to run the mongodump command. You can then access the dump via docker scp, which will transfer the file to your local machine.


In this post we looked at six pre-made NoSQL database Docker images.

If you’ve heard about one of these databases before but haven’t had the time to try things out, using the ready-made images on Docker Hub is an excellent, pain-free way to get started with the minimal amount of fuss.

Posted in Docker, Docker Hub

triangle square circle

Did you enjoy this post?