Перенос Docker на другой диск в Windows

9a4ba6f97c575e651cb2986af5a9cd9a

Всем привет! Недавно я столкнулся с проблемой нехватки памяти на основном диске под крупный проект, который разворачивается в Docker. Вопрос переноса ресурсов Docker на HDD в 1ТБ стоят принципиально, так как не было других вариантов развернуть проект. И вот, что из этого вышло…

Для начала скажу, что у меня стоит SSD WD Green 120G, где стоит Windows и некоторый важный софт, а на HDD 1ТБ стоят другие программы, проекты и «личная жизнь».

Прислали инструкцию по разворачиванию проекта, где был довольно большой дамп MySql размером более 50Гб и множество контейнеров. Как-то не обращал внимания на этот вопрос, но в процессе оооооочень долгой установки Docker схлопнулся и сказал:

Работать я не буду, я вообще выключаюсь, мне душно и не хватает места на диске, чтобы я тут тебе твои проекты поднимал.

Я устал, я ухожу!

Новость не из приятных была. Крутил этот Docker и так и сяк по всем инструкциям в инете и офф документации, но именно под Windows ничего не выходило. И да, если вы в daemon.json поменяете data-root, то он попросту не будет работать… Здорово, правда?!

Спустя много времени тестов и перенастроек я смог найти решение! Возможно, вы уже знаете о нем, так что не судите строго. Я лишь пытаюсь помочь «путникам в мире Windows с кастрированными жесткими дисками».

И так, хватит болтать и приступим. Делайте все в точности по инструкции и будет вам счастье. Сразу скажу, что у меня Windows с Docker лежит на диске C, а хочу я перенести его на диск D, где есть папка Programs.

# выключаем wsl
wsl --shutdown
# экспортируем данные docker-desktop
wsl --export docker-desktop D:\docker-desktop.tar
# убираем регистрацию данных docker-desktop
wsl --unregister docker-desktop
# импортируем данные docker-desktop в новую директорию
wsl --import docker-desktop D:\wslStore\ D:\docker-desktop.tar --version 2
# удалите D:\docker-desktop.tar

После этих манипуляций, все ваши истории с DockerDesktop будут располагаться в D:\wslStore\. Но, это не означает, что данные (контейнеры, снимки и прочие) будут тоже находиться там. Для переноса именно данных Docker нужна дополнительная связка команд:

# выключаем wsl
wsl --shutdown
# экспортируем данные docker-desktop-data
wsl --export docker-desktop-data D:\docker-desktop-data.tar
# убираем регистрацию данных docker-desktop-data
wsl --unregister docker-desktop-data
# импортируем данные docker-desktop-data в новую директорию
wsl --import docker-desktop-data D:\Programs\Docker\ D:\docker-desktop-data.tar --version 2
# удалите D:\docker-desktop-data.tar

И вот только теперь именно под Windows ваш Docker будет храниться все свое барахло именно по пути D:\Programs\Docker\

Аналогично можно перенести и Ubuntu, и другие истории с wsl/Docker куда вам надо:

wsl --export Ubuntu ubuntu.tar
wsl --unregister Ubuntu
wsl --import Ubuntu D:\wslStore\Ubuntu\ ubuntu.tar --version 2

На эти решения я потратил целый день: то одно пробовал, то другое — и вот нашел рабую схему изменения директории хранения данных Docker под Windows.

Надеюсь, что эта информация была полезна. Ну, а если нет, то сильно не бейте:)

© Habrahabr.ru