Стандартный каталог данных, используемый docker, - /var/lib/docker, и поскольку в этом каталоге будут храниться все ваши образы, тома и т.д., он может стать довольно большим за относительно небольшое время.

Если необходимо переместить каталог данных docker в другое место, можно выполнить следующие простые действия.

1. Остановить демон docker

sudo service docker stop

2. Добавьте конфигурационный файл, указывающий демону docker местоположение каталога данных

Создайте конфигурацию демона докера /etc/docker/daemon.json со следующим содержимым:

Версия до v17.05.0

{
   "graph": "/path/to/your/new/docker/root"
}

“"/path/to/your/new/docker/root” - это новое местоположение, которое вы хотите использовать для нового каталога данных docker.

v17.05.0 и новее

Начиная с версии 17.05.0 флаг -g или --graph для команды dockerd или docker daemon использовался для указания каталога, в котором должны храниться постоянные данные и конфигурация ресурсов, и был заменен на более описательный флаг --data-root. Создаем конфигурационный файл демона:

{
   "data-root": "/path/to/your/new/docker/root"
}

Эти флаги “graph” были добавлены до выхода Docker 1.0, поэтому не будут удалены, а только спрятаны. Вы по-прежнему можете использовать этот флаг, но просто не советуем его использовать.

3. Скопируйте текущий каталог данных в новый

Мы можем использовать как команду rsync, так и команду cp:

sudo rsync -aP /var/lib/docker/ "/path/to/your/new/docker/root "sudo cp -rp /var/lib/docker/* "/path/to/your/new/docker/root/"

4. Переименуйте старый каталог docker

Переименуйте старый каталог, чтобы демон docker не мог использовать старый каталог.

sudo mv /var/lib/docker /var/lib/docker.old

5. Перезапустите демон docker

sudo service docker start

6. Тест

Если все в порядке, то вы не должны заметить никаких отличий в использовании ваших docker-контейнеров.

7. Очистите старые данные.

После всего этого необходимо очистить старые данные:

rm -rf /var/lib/docker.old