Hi,
i’m running home assistant on debian 10 with docker and supervisor. I have system on btrfs. I have noticed (and googled), that docker leaves lots of subvolumes of old docker images. I’m running out of space.
I have prepared clean XFS partition for /var/lib/docker. I can copy files from present /var/lib/docker.
But it won’t work after restarting docker, because it needs to have different structure. Is there a way to migrate? Will supervisor download everything (images) and (re)create containers for me?
When you update docker Image, old image remain in storage. This old image may simply be deleted if no longer needed/using. This would take care of “out of storage” problem.
If you delete the docker Image being used by docker Container I expect Container will not function. You should be able to rsync from /storagebrtfs to /storagexfs while disk not in use. But…How will docker know you move storage location/disk? Are you replacing drive or is this a separate mounted disk on system?
Ultimately, you could also delete all except docker persistent storage (like /ha/configfolder) and recreate the docker container and all should run as before.
you likely must also remove the brtfs storage driver support to eliminate the creation of subvolumes.
My point is in the end it is faster/simpler for you to recreate all Container after remove and reinstall docker
Docker is used for this exact purpose and I imagine you have less than 10 containers in your system. trying to copy/paste /var/lib/docker makes no sense and better to just recreate all containers after system has been prepared
Yes i have something like that in mind, hence my question, if hassio supervisor (re)creates all containers when it starts. I just don’t know, whether there is some information what and how should be set up, stored outside of docker, so it is set up again in the same way as it is now.
If i mount separate XFS to /var/lib/docker, i guess, the btrfs storage driver won’t kick in
I found that best option is to use rekcod app
My setup follows:
First I’ve setup dockerps alias:
alias dockerps='docker ps -a --format "table {{.Names}}\t{{.Image}}\t{{.Status}}" | sort'
This allows me to see only needed information from docker ps command. The first column contain NAMES which then is used for rekcod app invocation in a loop. By the way - my alias dockerps shows also stopped containers.
Then I’ve run simple loop:
for d in `dockerps | grep -v NAMES | awk '{print $1}'`;
do
echo $d;
rekcod $d >> docker_backup.sh;
done
Then start docker and check containers. Usually I found out that I need to restart hassio_supervisor, homeassistant and other addons (mariadb) to sync all names.
It works after some polishing.