Ändern Sie den Speicherort des Docker-Computers - Windows


73

Ich verwende die Docker-Toolbox unter Windows 7, um Docker auszuführen. (Docker Version 1.9.1)

Wie sich herausstellt, erstellt der Docker-Computer seine VM unter C: \ Benutzer \ Benutzername \ .docker \ Maschine \ Maschinen \ Standard. Während ich die Images festschreibe, wird die Größe der VM an diesem Speicherort größer. Da es sich um Windows handelt, kann ich mir den Luxus des Speicherplatzes auf dem Laufwerk C nicht leisten.

Kann ich den Standort des Standardcomputers auf irgendeine Weise ändern?

Antworten:


60

Das hat unter Windows 7 perfekt funktioniert:

  1. Richten Sie die Umgebungsvariable MACHINE_STORAGE_PATH als Stammverzeichnis des Speicherorts ein, den Sie für die Docker-Computer / VMs, den Cache usw. verwenden möchten.
  2. Installieren Sie die Docker Toolbox
  3. Führen Sie das Docker-Schnellstartterminal aus

Die Docker Toolbox erstellt nun alle Dateien an dem Speicherort, auf den MACHINE_STORAGE_PATH verweist.

AKTUALISIEREN:

Beachten Sie, dass das Erstellen einer neuen VM mit dem neuen Speicherpfad nicht ideal ist, da die Docker Quickstart Terminal-Skripts anscheinend nicht mit etwas funktionieren, das nicht als "Standard" bezeichnet wird.

Wenn sich bereits eine VM im Laufwerk C: befindet, ist es am einfachsten, zu Oracle VirtualBox zu wechseln und die "Standard" -VM zu löschen, die Docker Toolbox zu deinstallieren und C: \ Users \ <Benutzername> zu löschen. docker \, und folgen Sie dann den 3 obigen Schritten.

Hinweis: Die Deinstallation und Neuinstallation der Docker Toolbox ist möglicherweise nicht erforderlich. Aber ich habe nicht ohne getestet.

Aktualisieren

Um auch Docker-Zertifikate zu verschieben, legen Sie die DOCKER_CERT_PATHVariable so fest, dass sie auf den Pfad des neuen Laufwerks zeigt. Danke an @Nutle für den Tipp.


7
Ich benutze Windows 10 und dieser Weg hat auch mit mir funktioniert
Ya Basha

1
Beachten Sie auch, dass Docker-Maschine davon ausgeht, dass dies das übergeordnete Verzeichnis für die Verzeichnisse "Cache", "Zertifikate" und "Maschinen" ist. Ich persönlich ging zuerst davon aus, dass Docker-Machine die Verzeichnisstruktur .docker / machine erstellen würde, mit der ich darunter vertraut war, wenn ich {my-home-directory} als MACHINE_STORAGE_PATH platziere. Dies war nicht der Fall. Um ein gleichwertiges Verhalten zu erzielen, musste ich MACHINE_STORAGE_PATH auf {my-home-directory} \. Docker \ machine setzen.
Jzheaux

1
Erwähnenswert ist, dass möglicherweise zusätzlich die Umgebungsvariable für die Zertifikate festgelegt werden muss DOCKER_CERT_PATH. In meinem Fall (w7 x64) war es genug, um es einzustellen {my_custom_machine_storage_path_link}\certs.
Nutle

2
Ich habe mein Docker und meine VM mit einem anderen Verzeichnis aktualisiert, indem ich einfach den gesamten .docker-Ordner nach D: \ DockerEnv kopiert und MACHINE_STORAGE_PATH entsprechend aktualisiert habe, ohne Docker / VM zu deinstallieren. Für den tatsächlichen Start muss ich die Datei default.vbox, config.json D:\DockerEnv\.docker\machine\machines\default auch von VirtualBox.xml aus aktualisieren{USER_HOME}.VirtualBox
Nikhil

1
Vielen Dank. Ich kann bestätigen, dass keine Deinstallation erforderlich ist. Entfernen Sie einfach die Standard-VM docker-machine rm defaultund erstellen Sie eine neue, nachdem Sie die Umgebungsdaten festgelegt haben.
Dmitry Smorzhok

52

Sie können das .dockerVerzeichnis auf ein anderes Laufwerk verschieben und einen Verbindungspunkt dazu erstellen.

Bitte beachten Sie, dass die reguläre Verknüpfung nicht funktioniert.

Zum Beispiel:

Verschieben Sie das .dockerVerzeichnis von C:\Users\usernamenachD:\

und Renn:

C:\Users\username>mklink /j .docker D:\.docker
Junction created for .docker <<===>> D:\.docker

1
+1 Danke - tatsächlich hat es unter Windows 10 (Home mit aktiviertem Entwicklermodus) mklink /Dauch funktioniert - ich habe es versucht, bevor ich diese Antwort gefunden habe.
Sebastian

1
Elegante Lösung
Mohsen Afshin

Es ist am wenigsten aufwendig, sowohl den Maschinenspeicherpfad als auch den Zertifikatschlüsselpfad zu verschieben. und kompatibel mit jedem anderen möglichen Verhalten auf diesem Pfad. Ich stimme dieser Antwort dreimal zu :)
bigdataolddriver

Ich denke, es ist die einfachste Option für mindestens Docker unter Windows mit WSL, versuchte Konfiguration wie "Data-Root", aber es hat nicht funktioniert.
Abdul Mohsin

31

Seit 2015 gibt es jetzt (Juni 2017) Hyper-V , mit dem Sie definieren können, wo Sie Ihre VHDXDateien haben möchten :

Siehe Docker für Windows 1.13.0, 2017-01-19 (stabil) :

VHDX-Dateien mit Images und nicht vom Host bereitgestellten Volumes können verschoben werden (über die Registerkarte "Erweitert" in der Benutzeroberfläche).

Das ändert das %APPDATA%\Docker\settings.jsonmit einer Zeile:

"MobyVhdPathOverride":"C:\\Users\\Public\\Documents\\Hyper-V\\New folder\\MobyLinuxVM.vhdx"

https://cdn-enterprise.discourse.org/docker/uploads/default/optimized/2X/6/6193445cf15811ce18317c727af258adb2d16c9d_1_690x447.jpg

Weitere Informationen finden Sie in diesem Thread .


Ursprüngliche Antwort

Derzeit erzwingt Docker-Maschine die Verwendung von %USERPROFILE%:
Siehelibmachine/mcnutils/utils.go#L17-L25

Wie in Ausgabe 499 kommentiert :

Wie können Benutzer in der Zwischenzeit angeben, wo die .docker/machine/*Dateien gespeichert werden?

Sie können dies durch Angabe --storage-pathin der Befehlszeile oder mithilfe der Umgebungsvariablen tun MACHINE_STORAGE_PATH.

(Sie können es in PR 1941 implementiert sehen )

Joost Den Boer weist in den Kommentaren darauf hin

Ich habe es gerade -s <path>auf einem Mac versucht und es scheint gut zu funktionieren.
Was möglicherweise nicht offensichtlich ist, ist, dass die Pfadoption vor dem Befehl steht .
Durch Ausführen von " docker-machine -s /Volumes/other/location' create --driver=virtualbox" wurde ein neues VirtualBox-Image am anderen Speicherort erstellt.


1
@shrivb Versuchen Sie, die MACHINE_STORAGE_PATHUmgebungsvariable festzulegen (anstatt die --storage-pathOption zu verwenden), um festzustellen , ob dies einen Unterschied macht.
VonC

4
In Bash wäre das export MACHINE_STORAGE_PATH=F:\user\DevOps\VM\machine: kein Leerzeichen, keine Anführungszeichen. Aber versuchen Sie es in einer regulären CMD-Sitzung :: set MACHINE_STORAGE_PATH=F:\user\DevOps\VM\machinewieder kein Leerzeichen, keine Anführungszeichen.
VonC

1
Ich habe gerade '-s <Pfad>' auf einem Mac ausprobiert und es scheint gut zu funktionieren. Was möglicherweise nicht offensichtlich ist, ist, dass die Pfadoption vor dem Befehl steht. Wenn Sie "docker-machine -s / Volumes / other / location 'create --driver = virtualbox" ausführen, wird am anderen Speicherort ein neues VirtualBox-Image erstellt.
Joost den Boer

1
Unter Windows hat das Flag -s den neuen Computer wie erwartet im angegebenen Pfad erstellt. Docker scheint danach jedoch nichts davon zu wissen, "Docker-Maschine ls" listet es nicht auf und ich kann es nicht "Docker-Maschine starten" (Fehler "Host existiert nicht"). Ausführen von Docker Toolbox Version 1.9.1i
Ablehnung

4
Sofortiges Update: Ich habe zusätzlich MACHINE_STORAGE_PATH exportiert und kann jetzt meinen Computer über "docker-machine ls" aufgelistet sehen. Unklar, ob die ursprüngliche Flagge erforderlich war.
Ablehnung

23

Verwenden Sie einfach die VirtualBox-Grafikoberfläche, um die Datei zu verschieben disk.vmdk:

Geben Sie hier die Bildbeschreibung ein

  1. Kopieren Sie die Datei beispielsweise C:\Users\{myUsername}\.docker\machine\machines\default\disk.vmdkin einen anderen Ordner F:\docker-image\.
  2. Öffnen VirtualBox, defaultVM auswählen und öffnen Settings.
  3. Öffnen Storage, Strom auswählen disk.vmdkund freigeben (oder löschen).
  4. Klicken Sie auf Choose Virtual Hard Disk File...und suchen Sie nach kopierter Datei inF:\docker-image\
  5. Eine Warnung tritt auf: VirtualBox beschwert sich über die alte VM-UID und geht dann zum Menü File, wählt Virtual Media Manager...die alte aus und gibt sie frei oder entfernt siedisk.vmdk
  6. Wiederholen 4., es ist geschafft!
  7. Wenn dies für Ihre Umgebung erforderlich ist, führen Sie den Umzug auch für boot2docker.iso, Snapshot Folder, Video Capture durch.

2
Erwähnenswert ist, dass Sie die folgenden Schritte nur ausführen können, wenn Ihre VM nicht ausgeführt wird.
Zygimantus

2
1) docker-machine.exe stop default 2) Verschieben Sie disk.vmdk in der Virtualbox-Benutzeroberfläche an einen neuen Speicherort. (Datei / Datenträger verwalten / verschieben) 3) docker-machine.exe Startstandard
MrDywar

1
Nach stundenlangem Debuggen der anderen Lösungen probiere ich diese aus und habe sie in 5 Minuten zum
Isaac Pak

14

Geben Sie diese beiden Befehle ein, wenn Sie das Docker-Schnellstartterminal ausführen.

Ich nehme an, Ihr neuer Speicherort ist "D: \ docker" und Ihr neuer Computername ist "docker1".

export MACHINE_STORAGE_PATH=D:\\docker

docker-machine create --driver=virtualbox docker1

Dadurch sollte an Ihrem neuen Standort ein neuer Computer mit dem angegebenen Namen erstellt werden.


8

Ich konnte die Umgebungsvariablenmethode MACHINE_STORAGE_PATH nicht zum Laufen bringen. Bei der ersten Initialisierung der Maschine wurde immer wieder über fehlende Zertifikate geklagt. Noch unter Windows 7 muss also Docker-Toolbox verwendet werden.

Ich habe das Problem umgangen durch:

  1. Deinstallation der Docker Toolbox und Neustart des Computers
  2. Administrator-Eingabeaufforderung öffnen (Eingabeaufforderung suchen, Umschalttaste gedrückt halten, "Als Administrator ausführen" auswählen)
  3. Löschen von .docker aus% USERPROFILE%: rmdir / S% USERPROFILE% .docker
  4. Erstellen Sie einen Ordner mit dem Namen .docker an einer anderen Stelle: mkdir a: \. Docker
  5. mklink / J% USERPROFILE% .docker a: \. docker
  6. Schließen Sie die Admin-Eingabeaufforderung
  7. Installieren Sie die Docker Toolbox neu
  8. Verwenden Sie den Link Docker Quickstart Terminal, um alles zu booten.
  9. Kitematic kann jetzt auch geöffnet werden (obwohl ich beim ersten Fehler die Option "Virtuelle Box verwenden" auswählen musste.

3

Ich hatte einige Probleme mit den oben genannten Lösungen, aber das hat bei mir funktioniert:

  • Definieren Sie die MACHINE_STORAGE_PATHUmgebungsvariable, die auf das gewünschte Verzeichnis / den gewünschten Ordner verweist.
  • Installieren Sie die Docker-Toolbox wie gewohnt. Wenn dies für Sie funktioniert, ist dies in Ordnung, aber für mich wurde es immer noch im .dockerVerzeichnis installiert .
  • Um dies zu beheben, habe ich dann den Standardcomputer, der zusammen mit dem .dockerOrdner erstellt wurde, angehalten und aus dem Benutzerverzeichnis entfernt.
  • Das start.shSkript wurde bearbeitet und die Zeile oben hinzugefügt:

z.B

export MACHINE_STORAGE_PATH=D:\\Docker
  • Führen Sie die Docker-Schnellstart-Terminalverknüpfung aus, mit der der Standardcomputer im gewünschten Ordner neu erstellt wurde

2

Diese Antwort richtet sich an Benutzer der Docker Toolbox (Windows 10 Home Build 1909, Sie können die folgenden Schritte für die Docker-Installation und die anschließende Standortänderung ausführen. Ich füge keine Bilder hinzu.)

Installieren Sie Docker Toolkit und VM müssen nach der Installation von Docker Toolkit mit Administratorrechten installiert werden (* da Docker Toolkit auch VM installiert, diese jedoch eine niedrigere Version hat und ein Problem mit anderen ISO-Dateien verursacht, können Sie in diesem Fall auch das Kontrollkästchen deaktivieren, *) . Jetzt müssen wir den Speicherort von disk.vmdk ändern und den neuen Speicherort in VM aktualisieren.

  • Installieren Sie die Docker Toolbox von hier aus . Befolgen Sie die Anweisungen
  • Laden Sie jetzt Virtual Machine v6 + herunter
  • Installieren Sie die virtuelle Maschine als Administrator (indem Sie mit der rechten Maustaste darauf klicken und dort auswählen)
  • Gehen Sie zu dem Ort, an dem Ihr VirtualBox.exe( nicht das Installationsprogramm ) vorhanden ist, und klicken Sie mit der rechten Maustaste darauf (Sie finden es über die auf Ihrem Desktop erstellte Verknüpfung).
  • gehe zu Eigenschaften -> Kompatibilität -> Einstellung für alle Benutzer ändern -> auswählen run this program as administrator
  • Schließen Sie nun die VM, wenn sie ausgeführt wird, und führen Sie die KitematicOption aus. Wenn dies fehlschlägt (wahrscheinlich), wählen Sie die für die VM bereitgestellte Option aus (es sind nur 2 Optionen vorhanden).
  • Diesmal wird es funktionieren, jetzt schließen Sie es

Ändern des Speicherorts, an dem Bilder heruntergeladen werden

  • Öffnen Sie Ihre VM und schließen Sie ein neu ausgeführtes Image default(Rechtsklick -> Schließen -> Ausschalten).
  • Kopieren Fügen Sie Ihre disk.vmdkDatei (für mich ist sie vorhanden C:\Users\Dell\.docker\machine\machines\default\disk.vmdk) an einen Ort ein, an dem Sie Ihre heruntergeladenen Bilder speichern möchten (im Grunde disk.vmdknimmt die Größe zu, wenn Sie Docker verwenden).
  • Jetzt müssen wir der VM auch über diese Änderung informieren
  • Klicken Sie mit der rechten Maustaste auf das defaultBild und gehen Sie zu den Einstellungen
  • Wählen Sie Speicher
  • Entfernen Sie den disk.vmdkAnhang, indem Sie mit der rechten Maustaste auf -> Entfernen klicken (das war der ältere Pfad, der an disk.vmdk gebunden wurde).
  • Klicken Sie auf file-> virtual media managerund entfernen Sie auch disk.vmdkvon hier (Jetzt weiß VM nicht, ob eine solche disk.vmdk-Sache existiert).
  • Klicken Sie mit der rechten Maustaste auf defaultBild -> Speicher -> add hard disk(diese Option befindet sich direkt über dem ISO-Bild).
  • Wählen Sie nun aus, disk.vmdkdass Sie irgendwo eingefügt haben
  • Führen Sie nun Ihre Docker-CLI aus und führen Sie diesen Befehl aus docker run hello-world
  • Wenn kein Fehler vorliegt, ist alles erledigt
  • Sie können die Größe überprüfen, indem Sie die Größe dieser beiden VMDK-Festplatten überprüfen und dann einige neue Images abrufen



Ich habe ab der Installation eine sehr beschreibende Antwort geschrieben, weil ich auf einige Probleme gestoßen bin und sie daher für die anderen sehr einfach machen wollte.
Sie können Ihre disk.vmdk-Festplatte (ältere) von Ihrem C-Laufwerk löschen, wenn Sie möchten



0

Diese Antworten sind ab der neuesten Version veraltet. Der Speicherort kann in der Benutzeroberfläche Einstellungen konfiguriert werden.

https://github.com/docker/for-win/issues/333


Beachten Sie, dass Docker Desktop für Windows unter einigen Betriebssystemen, einschließlich Windows 10 Home, nicht unterstützt wird. Diese Antworten sind also immer noch von Nutzen.
Charles Wood

Windows ohne Hyper-v (ich kann Windows 7 und Windows 10 Home nennen) sind für diese Antworten weiterhin von Nutzen.
BigDataolddriver

0

Ich fand, dass viele dieser Antworten keine Daten mehr enthielten, zumindest funktionierten sie in meiner Umgebung nicht: win10 PRO, Docker Desktop Community 2.0.0.3. Schließlich habe ich dieses Problem mit folgender Methode gelöst:

  1. Docker deinstallieren

  2. Öffnen Sie den Hyper-V-Manager (drücken Sie die WIN-Taste und geben Sie "Hyper" ein.)

  3. Ändern Sie die Standardspeicherorte für virtuelle Festplatten in den Hyper-V- Einstellungen (nicht in den VM-Einstellungen) und bestätigen Sie

  4. Docker installieren

  5. Überprüfen Sie den Speicherort des Disk-Images in den erweiterten Optionen der Docker-Einstellungen


1
Unter Windows 10 Pro haben Docker-Desktop und Docker-Toolbox standardmäßig Hyper-V als VM-Treiber. Die meisten dieser Antworten beziehen sich auf die Docker-Toolbox mit dem VirutalBox-Treiber unter Windows ohne Hyper-V.
BigDataolddriver

0

Ich verwende Windows 10 und Docker Desktop (Community) Version 2.0.0.0. Ich möchte die VHDX-Datei auf ein anderes Laufwerk verschieben.

Klicken Sie mit der rechten Maustaste auf Docker Desktop -> Einstellungen, Geben Sie hier die Bildbeschreibung ein dann wird die Docker Desktop-Benutzeroberfläche geöffnet. Gehen Sie zu Erweitert -> Speicherort des Datenträgerabbilds. Geben Sie hier die Bildbeschreibung ein Ändern Sie einfach den Pfad zum neuen Ziel. Der gesamte Vorgang verlief für mich reibungslos und schnell. Die vhdx-Datei wird automatisch vom ursprünglichen Pfad kopiert auf neuen Pfad Docker neu starten und alle funktionieren wie erwartet  

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.