Recently I had an issue where I was using a mini computer to run some Docker services and I kept running out of space on the tiny 16GB hard drive. The hard drive for this machine was soldered on the motherboard so there was no possibility to add a larger drive. Considering Docker itself was using about 9GB of that space, the logical solution was to mount the data directory to another disk, which is this case was a low profile USB 3.1 thumb drive. The steps to complete this are quite simple and here they are:
- First, you need to stop the Docker service:
systemctl stop docker.service - Next, make a new directory somewhere within your mount point and copy the files:
mkdir -p /path/to/new-docker
rsync -aqxP /var/lib/docker/ /path/to/new-docker
 - Open /etc/docker/daemon.json and add the new data directory
{ "/path/to/new-docker" } - Now the part noone tells you, make sure the external drive is mounted before the Docker service starts.
- First, get the system mount unit
systemctl list-units --type=mount - In my case, the USB was mounted to /media/jukebox/Samsung
 - Therefore, the mount unit is seen below is media-jukebox-Samsung.mount

 - Open docker service file and paste the mount unit at the end of the line beginning with After
- Before:
After=network-online.target firewalld.service containerd.service - After edit:
After=network-online.target firewalld.service containerd.service media-jukebox-Samsung.mount 
 - Before:
 - The service will now wait for that volume to be mounted before it starts.
 
 - First, get the system mount unit
 - Finally, Restart Docker
systemctl start docker.service 
How to move Dockers data directory
	