Миграция данных Docker в домашний каталог
Когда локальных проектов для разработки становится много, данные Docker (образы, контейнеры, тома) начинают занимать много места, что критично для работы Ubuntu.
Docker по умолчанию хранит свои данные в /var/lib/docker, но этот каталог можно перенастроить. Есть два подхода:
- С бэкапом – скопировать существующие данные, перенастроить Docker и Containerd, затем удалить старые файлы.
- Без бэкап – полностью очистить все компоненты Docker и настроить окружение с нуля.
Ниже описан первый вариант (с бэкапом).
Останавливаем службы
sudo systemctl stop docker docker.socket containerd
docker– основной демон (движок Docker)docker.socket– сокет для API Dockercontainerd– демон, управляющий жизненным циклом контейнеров (используется Docker)
Переносим данные
Создаем рабочие каталоги:
sudo mkdir -p /home/master/dev/docker sudo mkdir -p /home/master/dev/containerd
Копируем данные:
sudo rsync -avxP /var/lib/docker/ /home/master/dev/docker sudo rsync -avxP /var/lib/containerd/ /home/master/dev/containerd
Делаем бэкап старых каталогов:
sudo mv /var/lib/docker /var/lib/docker.back sudo mv /var/lib/containerd /var/lib/containerd.back
Настраиваем службы
Настраиваем Docker:
sudo nano /etc/docker/daemon.json
{
"data-root": "/home/master/dev/docker"
}
Настраиваем Containerd:
sudo nano /etc/containerd/config.toml root = "/home/master/dev/containerd"
Запускаем службы и проверяем
sudo systemctl start containerd sudo systemctl start docker
Проверьте, что Docker использует новый каталог:
$ docker info | grep "Docker Root Dir" Docker Root Dir: /home/master/dev/docker
Проверьте путь Containerd:
$ containerd config dump | grep ^root root = '/home/master/dev/containerd'
Удаляем резервные копии (если все работает)
sudo rm -rf /var/lib/docker sudo rm -rf /var/lib/containerd
После этого освободится место в корневом разделе Ubuntu.