Six Ready-made NoSQL Database Docker Images
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.
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.
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:
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.
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.