The Fli client

Fli is a client of FlockerHub. Fli can be installed on any Linux host running Ubuntu, CentOS, Fedora or RHEL with additional Linux OS support planned.

Fli should be installed on any host on which you want to snapshot a Docker data volume or on which you want to download a Docker data volume stored on FlockerHub.

You can download Fli as a Docker container using docker run fli or by downloading the binary (both available November 8, 2016)

The Fli client

Volume sets, branches and snapshots

Fli lets you manage your data as a collection of snapshots. These snapshots can be organized in collections of branches and volume sets.

A volume set is the highest level collection of snapshots. This collection can be further divided into branches. While a branch represents the lineage of a specific volume snapshotted overtime, a volume set is an arbitrary grouping that you define.

For example, you could have a volume set with three branches for Local data, Staging data and Production data, or a volume set with three branches for Mongo data, Redis data or Cassandra data.

Volume sets, branches and snapshots
ZFS for incremental snapshots & push/pull

ZFS for incremental snapshots & push/pull

Fli relies on the open source ZFS file system to which ClusterHQ is an active contributor for taking incremental snapshots and pushing and pulling data to FlockerHub.

For this reason, you need ZFS installed on any host that is running Fli.

Ubuntu 16.04 comes with ZFS pre-installed, but if you are using CentOS, RHEL or Fedora you will need to install the ZFS kernel module using our instructions.

The Fli data and metadata model

A data volume includes data (the actual bits you are storing) and metadata (information about the bits such as arbitrary key-value pairs). Fli can be used to manage both of these separately. This means that you can specify for each push or pull whether you want to move the data itself, or just the metadata.

The reason you want to manage the data and the metadata separately is that if you have 100 data volumes stored on FlockerHub accounting for 100 GB, for example, you don't want to have to pull all the data just to get a list of the volumes.

The Fli data and metadata model
Data and metadata are moved separately
Snapshot any Linux database, running on any infrastructure

Snapshot any Linux database, running on any infrastructure

Fli operates at the filesystem level, so it is agnostic of the database you are snapshotting. You can use Fli to snapshot any database that runs on Linux. You can also use Fli to snapshot your volumes no matter the infrastructure you run on.

Cloud, bare metal, colo. If you can install ZFS on your hosts, you can use Fli to snapshot your volumes and push/pull those volumes to FlockerHub.


Fli lets you snapshot, clone, and share your data volumes with anyone. The table below explains some of the key concepts behind Fli.

Concept Definition
Snapshot A “picture” of a volume. Can’t be mounted to a host, but can be instantiated as a data volume that can be mounted to a host. Fli takes incremental snapshots of data volumes, and these incremental changes can be pushed to a hosted volume repository called FlockerHub.
Data volume A storage volume that can be mounted to a host and consumed by a container. Fli turns snapshots into data volumes so that they can be consumed by a containerized application.
Volume branch A lineage of a particular data volume made up of multiple snapshots over time. Similar to a branch in Git, except that volume branches do not necessarily come from a single trunk, nor can they merge back together. For example, “Production data” might be one branch; “staging data” another branch; and “local data” a third branch.
Volumeset A collection of snapshots and branches that provide the complete history of a volume in time and space. This collection is made up of one or more branches each with one or more snapshots. A volumeset is created as a collection of branches and snapshots that share a common external attribute. For example, a volumeset could be defined to capture the entire state of a microservice that includes several databases.
Fli The CLI for FlockerHub, pronouced "fly". Fli enables snapshotting of local volumes and provides a catalog of local volumes, snapshots, branches and volume sets. Fli also synchronizes data between the local client and FlockerHub.
FlockerHub FlockerHub is a unified repository and catalog for all the snapshots, branches and volume sets that have been synchronized by Fli clients. FlockerHub also provides a user interface for administering volume sets, branches and snapshots. Currently, FlockeHub is offered as a ClusterHQ-hosted SaaS offering.

Find out more

Push and Pull Data Snapshots with Fli

FlockerHub allows you to store point in time snapshots of Docker volumes and easily "push" and "pull" them around into different environments such as Development, QA, CI/CD, Staging and Production. In this video you will learn how to push and pull snapshots to and from FlockerHub with Fli.

Creating Volumes with Fli

During this video, we'll explore the process of creating FlockerHub volumes, using the Fli, the FlockerHub CLI.

Fli - Updating Object Metadata

Finding the right data inside FlockerHub is essential. That's why FlockerHub allows you to tag your data snapshots with user-defined attributes. Attributes are simple key-value pairs that help you locate and identify data that's important to you.

Got a question?

Thanks for your email, we'll be in touch shortly