Shell script to move the Docker Root directory on Ubuntu 16.04 Xenial. Get the script on GitHub or download directly.
To use this script simply edit the line /dockerdir_new='/docker/var/'
to reflect your intended new Docker Root location and chmod +x move-docker-root.sh
, then run with ./move-docker-root.sh
.
Tested working on:
Client: Version: 17.05.0-ce API version: 1.29 Go version: go1.7.5 Git commit: 89658be Built: Thu May 4 22:10:54 2017 OS/Arch: linux/amd64
Server: Version: 17.05.0-ce API version: 1.29 (minimum version 1.12) Go version: go1.7.5 Git commit: 89658be Built: Thu May 4 22:10:54 2017 OS/Arch: linux/amd64 Experimental: false
move-docker-root.sh
#!/bin/bash #sysinfo.io #change paths below to suit your needs dockerdir_new='/docker/var/' dockerdir_old='/var/lib/docker/' set -e dockerdir_new2=$(echo "$dockerdir_new" | sed 's/\//\\\//g') systemctl stop docker mkdir -p $dockerdir_new rsync -a $dockerdir_old* $dockerdir_new sed -i.bak "/ExecStart=\/usr\/bin\/dockerd \-H fd:\/\//c ExecStart=\/usr\/bin\/dockerd \-H fd:\/\/ -g ${dockerdir_new2}" /lib/systemd/system/docker.service mv $dockerdir_old /var/lib/docker.bak/ ln -s $dockerdir_new /var/lib/docker systemctl daemon-reload systemctl start docker.service printf '\n* The Docker systemd config has been backed up to /lib/systemd/system/docker.service.bak\n* A backup of the old Docker Root has been copied to /var/lib/docker.bak/\n\n' docker info | grep 'Root Dir'