[ops] Docker on TF Grid VM needs btrfs storage driver — overlayfs fails on whiteout files #181
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Symptom
docker pull onlyoffice/documentserver:latest(or any image with whiteout files) fails on TF Grid VMs with:The default Docker storage driver
overlayfscannot create whiteout files because the TF Grid flist filesystem doesn't permit the underlying mknod operation.Root cause
TF Grid VMs boot from an Ubuntu flist (essentially a layered immutable rootfs). When Docker tries to use overlayfs on top of this, it can't perform the privileged operations needed to materialize whiteout files for image layers that delete files from a base image. OnlyOffice (and many other multi-layer images) hits this immediately.
Workaround
Move Docker's data root to
/data(a btrfs partition that supports the operations Docker needs) and switch the storage driver tobtrfs:After this, OnlyOffice's image extracts cleanly.
Related TF Grid quirks already documented
zinitinstead).systemctl start dockerfails with "System has not been booted with systemd as init system." Workaround:nohup dockerd > /var/log/dockerd.log 2>&1 &.rootfs_size = 16384in the TF Grid Terraform.publicip = true.Prod-level fix path
Add to
hero_demo/docs/ops/DEPLOYMENT_NU_HERO_OS.mda "Docker on TF Grid" subsection:apt install docker.io/etc/docker/daemon.jsonto use/data/docker+btrfsdrivernohup dockerd > /var/log/dockerd.log 2>&1 &(no systemd)If
hero_skillsever grows aservice_docker.nu(or any service that requires Docker), it should bake this configuration into the installer.Demo state on herodemo (2026-04-24)
apt install docker.ionohup(no systemd)Related
Signed-off-by: mik-tf
Correction (2026-04-24)
I overstated this issue. The Hero team already solved Docker-on-TF-Grid in the legacy docker-pipeline setup script:
hero_demo/deploy/single-vm/scripts/setup.sh:62-95. That script:/datafilesystemdata-root: /data/dockerin/etc/docker/daemon.jsonoverlay2for ext4/xfs/btrfs (withfuse-overlayfsfallback for unusual filesystems)dockerd &directly/var/lib/docker/*after switching to/dataSo the knowledge already exists. The real gap is that the nu-shell deployment runbook (
hero_demo/docs/ops/DEPLOYMENT_NU_HERO_OS.md) doesn't reference or extract this Docker-on-TF-Grid section. Anyone running the nu-shell flow who needs Docker (e.g. for OnlyOffice per home#174) will rediscover the issue from scratch — like I did.Reframed proposal
DEPLOYMENT_NU_HERO_OS.mdscripts/setup.sh:62-95directly, or extract those lines into a standalone snippet that nu-shell deploys cansourceor copyOn herodemo (2026-04-24)
I configured Docker with explicit
storage-driver: btrfsrather than the legacy script's defaultoverlay2. Both work on btrfs in practice; my config is harmless deviation but should be brought back in line with the team convention (overlay2 native) when the runbook subsection is written.Related
hero_demo/deploy/single-vm/scripts/setup.sh:62-95Reframing this as a docs gap, not a Docker support gap. Closing as "documented in setup.sh, just needs to land in the nu-shell runbook."
Signed-off-by: mik-tf
Resolved by
lhumina_code/hero_skills@7c823d1(PR lhumina_code/hero_skills#126).Part of Phase 2 tracker #185.