Skip to Content
Supra Layer 1MoveVMGetting StartedIntroduction to Docker

Introduction to Docker

Before installing the Supra CLI, you will need to install Docker. It’s helpful to understand what Docker is, how it works, and why we use it for this setup. This page includes some information that you will find useful once you move on to setting up the Supra CLI.


Prerequisites


What Is Docker?

Docker is a platform that packages applications into lightweight, portable containers. These containers include everything an app needs to run: code, runtime, libraries, and environment variables.

Think of containers as lightweight, isolated virtual machines — but more efficient and faster to start.


Why Use Docker with the Supra CLI?

Docker provides a consistent, repeatable environment that eliminates:

  • OS differences (Linux, Mac, Windows)
  • Dependency/version mismatches
  • “It works on my machine” issues

With Docker, developers can run the Supra CLI in a pre-configured environment without needing to install the CLI or dependencies locally.


What Is Docker Compose?

Docker Compose is a tool used to define and run multi-container Docker applications using a YAML file (compose.yaml or docker-compose.yml).

YAML is a human-readable data serialization language. It is commonly used for configuration files.

In our case, the Compose file:

  • Defines the container configuration for the Supra CLI
  • Specifies the image to use
  • Sets up bind mounts to share files between your machine and the container

Bind Mounts

A bind mount is a way to share directories between your host machine and the container.

In the Supra CLI setup:

  • The supra/configs folder on your host is bind-mounted to the configs/ folder inside the container.
  • The supra/move_workspace folder on your host is bind-mounted to the move_workspace/ folder inside the container.
  • This means anything you create/do inside these folders within the container will appear on your host — and vice versa.

Example: ~/Documents/supra/configs ↔ /supra/configs


Entering the Shell of a Container

Once you proceed with the CLI setup, you’ll create a docker container containing the CLI binary. To interact with the CLI, you’ll need to enter into the shell of the container. When a docker container is running, you can open a terminal session inside of it using:

docker exec -it supra_cli /bin/bash
  • exec tells Docker to run a command inside an existing container.
  • -it allows interactive terminal input/output.
  • supra_cli is the name of the container.
  • /bin/bash starts a shell session.

This is useful when you want to:

  • Run the Supra CLI directly (supra move tool ...)
  • Explore the file system
  • Debug issues inside the container

Make sure the container is running first:
Use docker start supra_cli if needed.


Common Docker Commands

Some of these commands may come in handy later.

CommandDescription
docker ps --allLists all containers (running and stopped)
docker start <container>Starts an existing container
docker stop <container>Stops a running container
docker exec -it <container> /bin/bashEnters the shell of a container
docker logs <container>Prints logs from a container
docker rm <container>Removes a container
docker imagesLists downloaded Docker images
docker volume lsLists Docker volumes (persistent storage)

Common Docker Compose Commands

Some of these commands may come in handy later.

CommandDescription
docker compose up -dStarts containers in detached (background) mode
docker compose downStops and removes containers, networks, and volumes
docker compose psLists containers defined in your Compose file
docker compose logsShows logs from all Compose services
docker compose restartRestarts all services defined in the Compose file
docker compose pullPulls the latest versions of images from the registry
docker compose buildBuilds or rebuilds services defined in the file

You can also use docker compose -f <file> to specify a compose file, including remote files via curl ... | docker compose -f - up.


Summary

Docker simplifies the Supra CLI experience by:

  • Eliminating setup headaches
  • Ensuring all developers use the same runtime
  • Providing isolated environments with shared config folders

If you’re new to Docker, this may feel like a lot — but once set up, you’ll rarely need to modify it again.


Want to Learn More?

Last updated on