Как переместить изображения docker на другой диск в Windows

Я пытаюсь выполнить следующее скрипт но dockerd не распознается на моей рабочей станции.

Моя ОПЕРАЦИОННАЯ система - Windows 10. Только что установлена последняя версия docker, которая является 18.09.2

Это мой первый раз с docker.

Этот ответ является скорее дополнением к Ответ Жана-Франсуа Бошана :
Вы можете найти полную документацию об этом конфигурационном файле на Документация Docker.

В нем говорится :

--data-root это путь, по которому хранятся сохраняемые данные, такие как изображения, тома и состояние кластера.

и

--exec-root это путь, по которому хранится состояние контейнера. Значение по умолчанию - /var/run/docker. Укажите здесь путь для вашего запущенного демона.

Поэтому, если вы хотите переместить как свои контейнеры, так и изображения (и другие материалы), вы должны установить оба этих параметра.

Вы также можете создать простую ссылку, по которой Docker ожидает, что его папка будет перенаправлена в нужное место.
Это описано здесь и приводят к тому же результату. Это выглядит "грязно", но в итоге выглядит более стабильным, чем первое решение.


Работа с движком WSL 2 (для Windows Home и Family Edition)

"D:\\Docker\\data-root" ценность как предложенный Мигелем приведет к сбою Docker, потому что это должна быть папка WSL.
Однако Docker создает определенный дистрибутив WSL, который содержит ваши данные docker, и вы можете переместить его. Для этого не требуется изменять параметры dockerd.

Чтобы переместить дистрибутив docker WSL

 wsl --export docker-desktop-data docker-desktop-data.tar wsl --unregister docker-desktop-data wsl --import docker-desktop-data X:\wslStore\ docker-desktop-data.tar --version 2

То X:\wslStore параметр - это путь, по которому вы хотите "смонтировать" свой дистрибутив, что-то вроде D:\Docker\data-root

В Docker v19.03.8 для Windows я добавил graph параметр в моей конфигурации, и это сработало для меня, но, по-видимому, этот параметр устарел, и теперь мы должны использовать data-root вместо. Значение по умолчанию для data-root является c:\programdata\docker. Имейте в виду, что в конфигурационном файле JSON необходимо экранировать обратную косую черту.

enter image description here

Найдите другой способ сделать это на основе этот пост.

Для контейнеров Unix путь к изображениям может быть изменен с помощью интерфейса рабочего стола Docker в форме настроек. Но если вы используете функцию Windows containers, то устанавливается вторая служба - "Docker Engine". Чтобы изменить папку изображений для этой службы, выполните следующие действия:

>1) Получите путь к конфигурационному файлу.Перейдите в раздел Административные инструменты-Службы. Проверьте командную строку docker demon на наличие службы "Dock Engine"

enter image description here

Командная строка - это что-то вроде

"C:\Program Files\Docker\Docker\Resources\dockerd.exe " --run-service --service-name docker -G MyPC" --конфигурационный файл C:\ProgramData\DockerDesktop\tmp-d4w\daemon.json

2) Отредактируйте конфигурационный файл daemon.json и добавьте свойство data-root.Значение свойства должно указывать на желаемое местоположение. Должно выглядеть примерно так. Проверять этот для получения информации о структуре json.

{  "registry-mirrors": [],  "insecure-registries": [],  "debug": true,  "experimental": false,  "hosts": [  "npipe:////./pipe/docker_engine_windows"  ],  "data-root":"D:\\Docker\\data-root" 

}

При необходимости предоставьте разрешения для запущенной учетной записи на доступ к папке.

3) перезапустите службу.Если не запускается, проверьте eventlog на предмет возможных ошибок.

Предыдущие настроенные данные в c:\ProgramData\Docker будут потеряны при изменении места установки.Это как новая установка в новое место. (изображения, контейнеры и т.д.). Все вложенные папки будут созданы снова.

Чтобы сохранить минимум на системном диске, сделайте это при новой установке.

Я не уверен на 100% в этом решении, но пока docker работает нормально, а загрузка системного диска невелика.