Коротко: 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 теперь может занимать столько, сколько нужно, на отдельном диске.