Features07 Backups & volumes

The swarm and its volumes, back where they came from.

The definition of the swarm as a zip, and a volume on its node as a .tar.gz. By hand, or daily or weekly, to a folder, an SFTP server or an S3 bucket, encrypted if you like. A restore lists what it will create. And per node, which volumes there are, how big they are and who uses them.

Fig. — A daily backup of the swarm, keeping the last seven, with its backups and a Restore on each.

What you can do

Swarm backup

Services, overlay networks, configs with their content, secrets without their content (the API never returns it) and node labels. Optionally with the stack files folder and its .env files.

Volume backup

One volume on one node, read through the Docker context of that node by a helper container that never starts.

Paused while copied

For a database, let the app pause the containers that use the volume while it is copied; the swarm still counts paused tasks as running.

On a schedule

Make a backup by hand, or daily or weekly at a set time, and keep the last n. A scheduled backup runs while the app runs, also from the notification area; when the app was off at that time, it runs once when the app starts. One that fails sends a notification.

Off this computer

A folder on this computer, an SFTP server or NAS (password or key, with the fingerprint of the server confirmed the first time), or an S3-compatible bucket: AWS, Backblaze B2, Wasabi, MinIO. A backup is written and checked here first, then sent; keeping the last n there only removes backups the app sent itself.

Encrypted with age

Per job, with age and one backup password that the app stores with DPAPI. An encrypted backup also opens with age -d; without the password it cannot be restored.

Restore the swarm

The app lists what is missing from the swarm of the active context and creates only what you tick; what is there stays as it is. A secret needs its value again. This also works into another swarm.

Restore a volume

The files in the backup overwrite the same files in the volume, and other files stay. A volume that no longer exists is created.

Volumes per node

Volumes in the sidebar: the volumes of every node, read through its Docker context, with their driver, size (as docker system df counts it), the stack they belong to and the services or containers that use them. Anonymous volumes are one tick away, and so are volumes outside the swarm: of a Compose project, or used only by standalone containers. A node that is down is named above the list; the app does not wait for it.

Remove an unused volume

Remove a volume that no container uses, not even a stopped one; otherwise the app says which containers still use it. Back up opens New backup with that node and volume already chosen.

A database

Back up the volume first, then upgrade.

Before you upgrade the Postgres image of db, back up the volume db-data on node-1 with its containers paused, then roll out. If the new version does not start, roll back the service and restore the volume.

Fig. — A new backup of a volume on its node: its containers paused while it is copied, daily at 03:00.

Volumes

Which volume lives where, and how big it is.

A volume belongs to one node: the same name on two nodes is two volumes, and docker volume ls only shows the node you are connected to. The Volumes page reads every node through its Docker context, so you see per node what is there, how much room it takes, and what nothing uses any more.

Fig. — Volumes per node: the same name on three nodes is three volumes; a node that is down is named, not waited for.

Keep it private

A swarm backup holds your configs.

A swarm backup contains the content of your configs and, with stack files, your .env files. Keep the folder somewhere private, or encrypt the backup.

All features

Try it on your own swarm.
Free, with the source on Codeberg. An installer for Windows 10 and 11 that installs nothing on the swarm.
Download for Windows
Version 1.8.0 · Docker-Swarm-MX-Setup.exe