Schließlich haben Sie herausgefunden, wie Sie die Windows Docker Toolbox auf Version 1.12.5 aktualisieren und meine Volumes am Laufen halten können, indem Sie einen freigegebenen Ordner im Oracle VM VirtualBox
Manager hinzufügen und die Pfadkonvertierung deaktivieren. Wenn Sie Windows 10+ haben, verwenden Sie am besten den neueren Docker für Windows.
1. das Upgrade Schmerz:
- Deinstallieren Sie zuerst VirtualBox.
- Ja, das kann in anderen Tools wie Android Studio zu Problemen führen. Danke Docker :(
- Installieren Sie eine neue Version der Docker Toolbox.
Beispiel für eine Redis-Datenbank:
redis:
image: redis:alpine
container_name: redis
ports:
- "6379"
volumes:
- "/var/db/redis:/data:rw"
Im Docker-Schnellstart-Terminal ....
- run
docker-machine stop default
- Stellen Sie sicher, dass die VM beschädigt ist
In Oracle VM VirtualBox Manager ...
- Ein freigegebener Ordner in der
default
VM wurde über oder über die Befehlszeile
hinzugefügt
D:\Projects\MyProject\db
=> /var/db
In docker-compose.yml
...
- Zugeordnetes Redis-Volumen als:
"/var/db/redis:/data:rw"
Im Docker-Schnellstart-Terminal ....
- Set
COMPOSE_CONVERT_WINDOWS_PATHS=0
(für Toolbox-Version> = 1.9.0)
- Führen Sie diese aus
docker-machine start default
, um die VM neu zu starten.
cd D:\Projects\MyProject\
docker-compose up
sollte jetzt funktionieren.
Jetzt wird die Redis-Datenbank in erstellt D:\Projects\MyProject\db\redis\dump.rdb
Warum relative Hostpfade vermeiden?
Ich habe relative Hostpfade für Windows Toolbox vermieden, da sie möglicherweise ungültige '\' Zeichen einführen. Es ist nicht so schön wie das Verwenden von Pfaden im Vergleich zu, docker-compose.yml
aber zumindest meine Kollegen können es problemlos tun, selbst wenn sich ihr Projektordner an einer anderen Stelle befindet, ohne die docker-compose.yml
Datei hacken zu müssen (schlecht für SCM).
Ursprüngliches Problem
Zu Ihrer Information ... Hier ist der ursprüngliche Fehler, den ich erhalten habe, als ich schöne, saubere relative Pfade verwendet habe, die früher für ältere Versionen einwandfrei funktionierten. Früher war meine Volumenzuordnung gerecht"./db/redis:/data:rw"
ERROR: for redis Cannot create container for service redis: Invalid bind mount spec "D:\\Projects\\MyProject\\db\\redis:/data:rw": Invalid volume specification: 'D:\Projects\MyProject\db\redis:/data
Dies bricht aus zwei Gründen ..
- Es kann nicht auf das
D:
Laufwerk zugreifen
- Volume-Pfade dürfen keine
\
Zeichen enthalten
docker-compose
fügt sie hinzu und beschuldigt dich dann dafür !!
- Verwenden Sie
COMPOSE_CONVERT_WINDOWS_PATHS=0
, um diesen Unsinn zu stoppen.
Ich empfehle, Ihre zusätzliche Zuordnung von freigegebenen VM-Ordnern in Ihrer docker-compose.yml
Datei zu dokumentieren, da Sie VirtualBox möglicherweise erneut deinstallieren und den freigegebenen Ordner zurücksetzen müssen. Ihre Kollegen werden Sie trotzdem dafür lieben.