Коротко: Docker по умолчанию хранит образы в /var/lib/docker на системном диске; разбираем, как перенести хранилище на другой диск.

Docker по нынешним временам — must have для любого разработчика. Установка и удаление просты (всё по официальной инструкции), а вот с директорией хранения есть нюанс: по умолчанию Docker складывает образы и кэш в /var/lib/docker на системном диске и со временем может «съесть» десятки гигабайт. Разберём, как перенести хранилище на другой диск.

Если с установкой и удалением Docker всё просто — заходим на официальный сайт и делаем всё по инструкции, — то с настройкой директорий не так очевидно.

Суть проблемы: со временем, при активном использовании образов, диск с операционной системой заметно уменьшается в объёме. Docker по умолчанию хранит кэши и образы там же, где стоит ОС. В моём случае это «съело» 90+ гигабайт — было довольно больно. Через час поисков выяснилось, что всё дело в папке /var/lib/docker. К счастью, это решается.

Как перенести хранилище Docker на другой диск?

1. Останавливаем Docker (иначе потом можно поймать ошибки в его работе):

sudo systemctl stop docker.service && sudo systemctl stop docker.socket

2. Редактируем файл /lib/systemd/system/docker.service — он хранит ряд настроек Docker:

sudo nano /lib/systemd/system/docker.service

3. Искомая строка выглядит примерно так (зависит от версии Docker):

ExecStart=/usr/bin/dockerd -H fd://

Перед ключом -H добавляем опцию --data-root с путём до новой папки:

ExecStart=/usr/bin/dockerd --data-root=/ssd/docker -H fd:// --containerd=/run/containerd/containerd.sock

# Нужно добавить только опцию --data-root с путём до папки, где хотим хранить образы

4. Если каталог под образы ещё не создан — самое время:

sudo mkdir -p /ssd/docker

5. Копируем содержимое /var/lib/docker в новый каталог:

sudo cp /var/lib/docker/* /ssd/docker/

6. Перезагружаем демон Docker, чтобы изменения вступили в силу:

sudo systemctl daemon-reload && sudo systemctl start docker

Готово. Место на системном диске освободилось, а Docker теперь может занимать столько, сколько нужно, на отдельном диске.