изменить расположение компьютера с докером - windows

<p>я использую docker toolbox на windows 7 для запуска docker. (докер версия 1.9.1)</p><p>оказывается, докер-машина создает свой vm в c:\users\имя пользователя\.docker\machine\machines\default. и когда я фиксирую изображения, размер vm в этом месте увеличивается. так как его windows, не может позволить себе роскошь места на диске c. </p><p>можно ли как-то изменить местоположение машины по умолчанию? </p>

<p>вот что отлично сработало для меня в windows 7:</p><ol> <li>установите переменную среды machine\_storage\_path в качестве корня расположения, которое вы хотите использовать для компьютеров/виртуальных машин docker, кэша и т.д.</li> <li>установить docker toolbox</li> <li>запустите docker quickstart terminal</li> </ol><p>docker toolbox теперь создаст все файлы в месте, указанном machine\_storage\_path.</p><p>обновление:</p><p>обратите внимание, что создание нового vm с новым путем к хранилищу не является идеальным, поскольку сценарии терминала быстрого запуска docker, похоже, не работают с чем-либо, что не называется «по умолчанию».</p><p>если у вас уже есть vm на диске c :, то самое простое, что вам нужно сделать, это зайти в oracle virtualbox и удалить виртуальную машину «по умолчанию», удалить docker toolbox, удалить c:\users\<username> .docker \, а затем выполните 3 шага, описанных выше.</p><p>примечание: удаление и переустановка docker toolbox может не потребоваться. но я не проверял без этого.</p><p><strong> обновление </strong></p><p>чтобы также переместить сертификаты docker, установите переменную <code>docker\_cert\_path</code>, чтобы указать путь к новому диску. спасибо @nutle за подсказку.</p>

<p>начиная с 2015 года, теперь (июнь 2017 года) <strong> <a href="https://en.wikipedia.org/wiki/hyper-v">hyper-v</a> </strong>, который позволяет определить, где вы хотите <a href="https://en.wikipedia.org/wiki/vhd\_(file\_format)"><code>vhdx</code> файлы</a> :</p><p>см. <a href="https://docs.docker.com/docker-for-windows/release-notes/#docker-for-windows-1130-2017-01-19-stable">docker для windows 1.13.0, 2017-01-19 (стабильный)</a> :</p><blockquote> <p>файл vhdx, содержащий образы и тома, не подключенные к хосту, можно перемещать (используя вкладку «дополнительно» в пользовательском интерфейсе)</p> </blockquote><p>это изменит <code>%appdata%\docker\settings.json</code> строкой:</p><pre><code>"mobyvhdpathoverride":"c:\\users\\public\\documents\\hyper-v\\new folder\\mobylinuxvm.vhdx" </code></pre><p> <a href="https://i.stack.imgur.com/e9kvc.jpg"><img src="https://i.stack.imgur.com/e9kvc.jpg" alt="https://cdn-enterprise.discourse.org/docker/uploads/default/optimized/2x/6/6193445cf15811ce18317c727af258adb2d16c9d\_1\_690x447.jpg"> </a> </p><p>смотрите <a href="https://forums.docker.com/t/move-mobylinuxvm-vhdx-to-another-drive/26293/14">эту тему больше</a> .</p><hr><p>оригинальный ответ</p><p>в настоящее время docker-machine 2015 принудительно использует <code>%userprofile%</code>:<br> см. <a href="https://github.com/docker/machine/blob/828cb12e2c647a6076b42aceb4c1f53c79a1db65/libmachine/mcnutils/utils.go#l17-l25"><code>libmachine/mcnutils/utils.go#l17-l25</code></a> </p><p>как прокомментировано в <a href="https://github.com/docker/machine/issues/499#issuecomment-77058445">выпуск 499</a> :</p><blockquote> <blockquote> <p>в то же время, как пользователи смогут указать, где хранятся файлы <code>.docker/machine/*</code>?</p> </blockquote> <p>вы можете указать <code>--storage-path</code> в командной строке или использовать переменную окружения <code>machine\_storage\_path</code>.</p> </blockquote><p>(вы можете увидеть это реализованным в <a href="https://github.com/docker/machine/pull/1941/files">pr 1941</a> )</p><p> <a href="https://stackoverflow.com/users/3309859/joost-den-boer">joost den boer</a> указывает <a href="https://stackoverflow.com/questions/33933107/change-docker-machine-location-windows/33934211?noredirect=1#comment57282544\_33934211">в комментариях</a> </p><blockquote> <p>только что попробовал '<code>-s <path></code>' на mac, и, кажется, он работает нормально.<br> <strong>что может быть неочевидным, так это то, что опция path идет перед командой</strong>.<br> запуск "<code>docker-machine -s /volumes/other/location' create --driver=virtualbox</code>" создал новый образ virtualbox в другом месте. </p> </blockquote>

<p>вы можете переместить каталог <code>.docker</code> на другой диск и создать для него точку соединения. </p><p>обратите внимание, что обычные ярлыки не будут работать.</p><p>например:</p><p>переместить каталог <code>.docker</code> из <code>c:\users\username</code> в <code>d:\</code></p><p>и запустить: </p><pre><code>c:\users\username>mklink /j .docker d:\.docker junction created for .docker <<===>> d:\.docker </code></pre>

<p>просто используйте графический интерфейс virtualbox, чтобы переместить файл <code>disk.vmdk</code>:</p><p> <a href="https://i.stack.imgur.com/sdifj.png"> <img src="https://i.stack.imgur.com/sdifj.png" alt="enter image description here"> </a> </p><ol> <li>скопируйте файл <code>c:\users\{myusername}\.docker\machine\machines\default\disk.vmdk</code> в другую папку, скажем <code>f:\docker-image\</code>.</li> <li>откройте <code>virtualbox</code>, выберите <code>default</code> vm и откройте <code>settings</code>.</li> <li>откройте <code>storage</code>, выберите текущий <code>disk.vmdk</code> и отпустите его (или удалите).</li> <li>нажмите на <code>choose virtual hard disk file...</code> и найдите скопированный файл в <code>f:\docker-image\</code></li> <li>предупреждение: virtualbox жалуется на старый uid vm, затем переходит в меню <code>file</code>, выбирает <code>virtual media manager...</code> и освобождает или удаляет старый <code>disk.vmdk</code></li> <li>повторите <code>4.</code>, все готово!</li> <li>если требуется вашей средой, выполните перемещение также для файла boot2docker.iso, папки моментальных снимков, захвата видео.</li> </ol>

<p>поместите эти две команды при запуске терминала быстрого запуска docker.</p><p>я полагаю, что ваше новое местоположение - «d:\docker», а имя вашего нового компьютера - «docker1».</p><pre><code>export machine\_storage\_path=d:\\docker docker-machine create --driver=virtualbox docker1 </code></pre><p>это должно создать новый компьютер с указанным именем в вашем новом месте.</p>

<p>я не смог заставить работать метод переменной среды machine\_storage\_path. он продолжал жаловаться на недостающие сертификаты при первой инициализации машины. все еще на windows 7, так что придется использовать docker-toolbox.</p><p>я обошел проблему:</p><ol> <li>деинсталляция docker toolbox и перезагрузка компьютера</li> <li>откройте приглашение администратора (найдите командную строку, удерживайте нажатой клавишу shift, выберите «запуск от имени администратора»)</li> <li>удаление .docker из% userprofile%: rmdir/s% userprofile% .docker</li> <li>создайте папку с именем .docker в другом месте: mkdir a: \. docker</li> <li>mklink/j% userprofile% .docker a: \. docker</li> <li>закрыть admin admin prompt</li> <li>переустановите docker toolbox</li> <li>используйте ссылку docker quickstart terminal, чтобы загрузить все.</li> <li>kitematic можно открыть и сейчас (хотя мне пришлось выбрать опцию «использовать виртуальную коробку» при первой ошибке).</li> </ol>

<p>у меня были небольшие проблемы с любым из вышеперечисленных решений, но вот что сработало для меня:</p><ul> <li>определите переменную окружения <code>machine\_storage\_path</code>, чтобы указать на нужную вам папку \_\_.directory/folder.</li> <li>установите docker-toolbox как обычно, если это работает для вас, тогда хорошо, но для меня оно все еще устанавливалось в каталоге <code>.docker</code>.</li> <li>чтобы это исправить, я остановился и удалил машину по умолчанию, которая была создана вместе с папкой <code>.docker</code> из каталога users.</li> <li>отредактировал скрипт <code>start.sh</code> и добавил строку вверху:</li> </ul><p>например.</p><pre><code>export machine\_storage\_path=d:\\docker </code></pre><ul> <li>запустите ярлык терминала быстрого запуска docker, который восстановит компьютер по умолчанию в нужной папке</li> </ul>

<p>я обнаружил, что многие из этих ответов были из данных, по крайней мере, они не работали в моей среде: win10 pro, docker desktop community 2.0.0.3. наконец, я решил эту проблему с помощью этого метода:</p><ol> <li> <p>удалить докер</p> </li> <li> <p>откройте диспетчер hyper-v (нажмите клавишу win, а затем введите «hyper»)</p> </li> <li> <p>измените настройки по умолчанию<strong> расположение виртуальных жестких дисков </strong>в<strong> hyper-v </strong>(не в настройках vm) и подтвердите</p> </li> <li> <p>установить докер</p> </li> <li> <p>проверить расположение образа диска в дополнительных настройках настроек докера</p> </li> </ol>

<p>эти ответы устарели, начиная с последней версии. расположение настраивается в пользовательском интерфейсе настроек.</p><p> <a href="https://github.com/docker/for-win/issues/333">https://github.com/docker/for-win/issues/333</a> </p>