cassandra
Cassandra Overview
Secure your stack with a hardened Cassandra image freshly-built by Minimus. Minimus images always include the most up-to-date package version for all packages and dependencies.
Use Apache Cassandra to set up a highly scalable, distributed NoSQL database in a containerized environment. Cassandra supports clusters across multiple datacenters with asynchronous masterless replication and provides high availability and low latency with no single point of failure.
Try It Out
To take the Minimus Cassandra image for a test run, you can either run a cluster of two Cassandra nodes on a single host or on two separate machines. This guide shows both options.
Run a cluster of Cassandra nodes on a single host
Before we start, we need to create a dedicated Docker network so the containers in the cluster will be able to communicate easily and securely by name:
docker network create minimus-networkStart the first Cassandra server instance:
docker run -d --rm --name minimus-cassandra \
--network minimus-network \
-e MAX_HEAP_SIZE=512M -e HEAP_NEWSIZE=200M \
reg.mini.dev/cassandraWe recommend adding the flags to control the JVM (Java Virtual Machine) memory settings. Without them, it's common to run into OOM errors for exceeding Docker container memory limits.
Check the internal IP address of the container:
docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' minimus-cassandraNext, run the second node on the same host machine, "seeding" it from the original server and adding it to the cluster. Use the environment variable CASSANDRA_SEEDS and reference the server by its internal IP address:
docker run -d --name minimus-cassandra-2 \
--network minimus-network \
-e CASSANDRA_SEEDS={IP of the first node} \
reg.mini.dev/cassandraCheck the logs of the first node for a message that the nodes are connected:
docker logs -f minimus-cassandra 2>&1 | grep "is now part of the cluster"For example:
INFO [GossipStage:1] 2026-04-19T07:34:30,155 Gossiper.java:1529 - Node /172.19.0.3:7000 is now part of the clusterRun a cluster of Cassandra nodes on different hosts
Start the first Cassandra server instance and expose its gossip IP and port:
docker run --rm -d --name minimus-cassandra \
-e CASSANDRA_BROADCAST_ADDRESS={external IP} -p 7000:7000 \
reg.mini.dev/cassandraNext, run the second node, expose its gossip IP and port, and seed it from the original server, referring to the original server by its IP:
docker run --rm -d --name minimus-cassandra \
-e CASSANDRA_BROADCAST_ADDRESS={external IP} -p 7000:7000 \
-e CASSANDRA_SEEDS={IP of the first instance} \
reg.mini.dev/cassandraSpin up a lightweight cqlsh client to connect to a running Cassandra container via Docker
The Cassandra image is equipped with cqlsh, Cassandra Query Language Shell, a command-line tool. For example, we can connect to the running Cassandra container from the first test:
docker run -it --rm --network minimus-network \
reg.mini.dev/cassandra cqlsh minimus-cassandraYou should see something like this:
Connected to Test Cluster at minimus-cassandra:9042
[cqlsh 6.2.0 | Cassandra 5.0.4 | CQL spec 3.4.7 | Native protocol v5]
Use HELP for help.
cqlsh> Enter the command:
DESCRIBE KEYSPACES;The output will print the keyspaces in your Cassandra cluster, for example:
system system_distributed system_traces system_virtual_schema
system_auth system_schema system_views Ready to mount a persistent data volume?
Mount a data directory on the host system to the default data directory in the container to persist the data. Navigate to the relevant directory on the host and run the following command:
docker run -d --name minimus-cassandra-data \
-v $(pwd)/datadir:/var/lib/cassandra \
reg.mini.dev/cassandraNote that testing with Docker Compose is not recommended as the server will not accept incoming connections until it has completed initialization, which may lead to issues.
Technical Considerations
The Cassandra image provided by Minimus is a slim, security-hardened alternative to the public image from Docker Hub. The images are largely interchangeable, with a few differences as noted below.
Cassandra built by Minimus:
- The image does not have a default volume. The public image defaults to
/var/lib/cassandra. - Drill down on the version specification tab to see the default user, listening ports, entrypoint, volumes, environment variables, etc.
The Payoff
A hardened, minimal image that will remain more secure for the long run and accrue vulnerabilities at a slower rate.
- See the risk reduction dashboard for a detailed CVE comparison over the past 30 days.
- Review the compliance report to see the default hardening and security configurations for the image.
Terms & Info
Trademark
This catalog is published by Minimus. All product names, logos, and marks, other than those belonging to Minimus, shown are owned by their respective rights holders and appear here only to identify the open source software each image contains. Minimus claims no ownership of those marks and implies no affiliation with, endorsement by, certification by, or sponsorship by any rights holder.
Disclaimer
Images are provided "as-is" without warranty of any kind. "Hardened" refers to the security configuration applied at the time of build and does not constitute a guarantee of ongoing security or absence of vulnerabilities. The free tier is provided without support, SLA, or guaranteed patching timelines. Security updates may be applied to paid subscriptions before or instead of free tier images. By pulling or using any image you agree to our Terms of Use.