Container runtime for Dat
Switch branches/tags
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Container runtime for Dat

npm install -g dat-container

Requires systemd-nspawn and fuse installed.


One a host (linux) machine allocate a sparse file, format it, mount it, and install a distro inside, and unmount it

# installing arch from arch
fallocate -l 1000000000 arch.img
mkfs.ext4 arch.img
mkdir -p mnt
sudo mount arch.img mnt
sudo pacstrap mnt base
sudo umount mnt

You can now boot this image using systemd-nspawn using the following command to modify it more

sudo systemd-nspawn -i arch.img -b

When you are done add this image to a Dat (you can add more than one) and start sharing the Dat

Live booting the image using Dat

You are now ready to boot the image over Dat. On a guest machine simply install dat-container and run

# do a full container boot
sudo dat-container -i arch.img --key <dat-key-from-above> -b

That's it! The image will now live boot over the network!

To run a single command (also live)

# run uname -a
sudo dat-container -i arch.img --key <dat-key-from-above> -- uname -a

Any argument prefixed with --sn- is automatically forwarded to systemd-nspawn.

How can I help?

This tool needs more cool options, features, and documentation. All help is appreciated.

Created files look big?

Don't worry. All files are usually very sparse and small on disk even though they look like they take up gigabytes of space. To see the actual size run

# show actual blocks used on disk as the first column
ls -shl