Stop the Docker services:
sudo systemctl stop docker
sudo systemctl stop docker.socket
sudo systemctl stop containerd
Copy docker root files to new dir
sudo rsync -aP /var/lib/docker/ /some_new_dir
Change docker config data-root
sudo vi /etc/docker/daemon.json
# add or change to
{
"data-root": "/some_new_dir"
}
Rename docker root to old
sudo mv /var/lib/docker /var/lib/docker.old
Start docker service
sudo systemctl start docker
Validate the new Docker root location:
docker info -f '{{ .DockerRootDir}}'
If after start docker containers we got error like:
Error response from daemon: error evaluating symlinks from mount source "/var/lib/docker/volumes/.../_data": lstat /var/lib/docker: no such file or directory
We need to change configs in containers:
find /some_new_dir -type f -name 'config.v2.json' -exec sed -i 's%/var/lib/docker%/some_new_dir%g' {} \;
If everything is ok, remove old docker root
sudo rm -rf /var/lib/docker.old