Isso pode ser facilmente obtido usando o sistema de arquivos BTRFS em combinação com instantâneos.
O sistema de arquivos modelo deve residir em um subvolume em um sistema de arquivos btrfs, digamos
btrfs subvolume create /mnt/btrfs/template
Depois disso, você pode preenchê-lo.
Para criar o instantâneo:
btrfs subvolume snapshot /mnt/btrfs/template /mnt/btrfs/node-1
Depois, remova o instantâneo com:
btrfs subvolume delete delete /mnt/btrfs/node-1
As vantagens são:
- criação e remoção é rápida
- não é necessário espaço extra, apenas os arquivos alterados (blocos) ocupam espaço extra
Mais adiante, se você quiser fornecer ao seu container alguns diretórios privados graváveis em cima de um sistema de arquivos de template somente leitura, você pode usar mount -o bind de dentro o recipiente
mount -o bind /mnt/btrfs/node-1/var /var