Skip to main content
Version: 2.4.0

Running ChronoLog with Docker (Single Node)

Welcome!

If you're looking for the easiest way to run ChronoLog, this is it. ChronoLog's Docker image provides a ready-to-use installation, so you can skip the manual setup and jump straight into using it.

Let's get started!

Before we start: What is Docker?

Docker is a tool that allows you to run applications inside lightweight, isolated environments called containers. This means you don't have to worry about dependencies or system configurations—everything is pre-packaged and ready to go.

For a deeper dive, check out:

Before continuing, let's verify that Docker is properly installed on your system:

docker --version

If you see a version number, you're good to go!

Setting Up ChronoLog Docker Image

Step 1: Pull the ChronoLog Docker Image

First, pull the pre-built ChronoLog image from Docker Hub:

docker pull gnosisrc/chronolog:latest

This downloads the latest ChronoLog image to your local machine, ensuring you have the most up-to-date version.


Step 2: Run the ChronoLog Container

Next, launch the ChronoLog container:

docker run -it --rm --name chronolog-instance gnosisrc/chronolog:latest

This command:

  • Starts a new ChronoLog container.
  • Runs it in interactive mode (-it), opening a terminal session inside the container.
  • Removes the container (--rm) when it stops, so it doesn't persist unnecessarily.
  • Assigns a name (--name chronolog-instance) for easier reference.

Once executed, you should see a welcome message. At this point, you are inside the ChronoLog container.


Step 3: Verify That ChronoLog Is Running

Open a new terminal window (outside the Docker container) and run:

docker ps

You should see a container named chronolog-instance. For example:

CONTAINER ID   IMAGE                        COMMAND       CREATED          STATUS          PORTS     NAMES
bfbc93af1d50 gnosisrc/chronolog:latest "/bin/bash" X seconds ago Up X seconds chronolog-instance

This indicates your ChronoLog container is up and running successfully!

Deploy ChronoLog Components

With the ChronoLog environment set up, it's time to deploy the system. We'll use the ChronoLog single-node deployment script to start all necessary components.

Step 1: Navigate to the Deployment Scripts Folder

Inside the container, navigate to the deployment scripts directory:

cd /home/grc-iit/chronolog_repo/deploy

Step 2: Run the Deployment Script

Execute the deployment script to start the ChronoLog system:

./local_single_user_deploy.sh -d -w /home/grc-iit/chronolog_install/Release

This command will deploy a basic ChronoLog architecture, including:

  • One ChronoVisor (log controller)
  • One ChronoKeeper (log store manager)
  • One ChronoGrapher (query and indexing service)
  • One ChronoPlayer (stream processor)

Step 3: Verify That ChronoLog Components Are Running

To ensure all components are properly deployed, run the following command:

pgrep -la chrono

You should see an active process for each ChronoLog component:

/home/grc-iit/chronolog_install/Release/bin/chronovisor_server --config /home/grc-iit/chronolog_install/Release/conf/visor_conf.json
/home/grc-iit/chronolog_install/Release/bin/chrono_grapher --config /home/grc-iit/chronolog_install/Release/conf/grapher_conf_1.json
/home/grc-iit/chronolog_install/Release/bin/chrono_player --config /home/grc-iit/chronolog_install/Release/conf/player_conf_1.json
/home/grc-iit/chronolog_install/Release/bin/chrono_keeper --config /home/grc-iit/chronolog_install/Release/conf/keeper_conf_1.json

If all four processes appear, your ChronoLog deployment is successfully running!

Running a ChronoLog Client + Performance Test

With the ChronoLog environment set up and all components deployed, it's time to test the system by running a client and analyzing its performance.

Step 1: Execute the ChronoLog Client

Run the following command to start the client admin with multiple MPI processes:

LD_LIBRARY_PATH=~/chronolog_install/Release/lib \
/home/grc-iit/chronolog_repo/.spack-env/view/bin/mpiexec -n 4 \
~/chronolog_install/Release/bin/client_admin \
--config ~/chronolog_install/Release/conf/default_conf.json \
-h 2 -t 2 -a 100 -s 100 -b 100 -n 100 -p

This command:

  • Launches the ChronoLog client.
  • Uses 4 MPI processes for parallel execution (-n 4).
  • Runs a performance test with specific parameters (-h 2 -t 2 -a 100 -s 100 -b 100 -n 100 -p).

Once executed, the client will create Chronicles, Stories, and Events, simulating real workloads to evaluate system performance.

Stopping the ChronoLog Container

Once you're done using ChronoLog, exit the container:

exit

Then stop the running instance (if it wasn't started with --rm):

docker stop chronolog-instance

And if you want to remove it completely:

docker rm chronolog-instance

What's Next?

Now that you have ChronoLog running in Docker, you're ready to:

  • Explore different ChronoLog deployment options by checking the Deployment guide.
  • Discover the potential of ChronoLog Clients: Client Examples (Basic Client, Interactive Client, Scripted Client & Python Client).
  • Start building your own applications on top of ChronoLog.

In our next tutorial, we'll show you how to run ChronoLog in a multi-node setup, so stay tuned!