最後に、Windows Docker Toolbox を v1.12.5 にアップグレードし、Oracle VM VirtualBox
マネージャーに共有フォルダーを追加してパス変換を無効にすることで、ボリュームを機能させ続ける方法を見つけました。Windows 10 以降を使用している場合は、新しい Docker for Windows を使用することをお勧めします。
最初のアップグレードの痛み:
- 最初に VirtualBox をアンインストールします。
- うん、それは Android Studio のような他のツールの機能を壊す可能性があります。ありがとうDocker :(
- Docker Toolbox の新しいバージョンをインストールします。
Redis データベースの例:
redis:
image: redis:alpine
container_name: redis
ports:
- "6379"
volumes:
- "/var/db/redis:/data:rw"
Docker クイックスタート ターミナルで ....
- run
docker-machine stop default
- VM が運搬されていることを確認します
Oracle VM VirtualBox Manager で ...
default
またはコマンドライン経由
で VM に共有フォルダーを追加しました
D:\Projects\MyProject\db
=>/var/db
でdocker-compose.yml
...
- マッピングされた redis ボリューム:
"/var/db/redis:/data:rw"
Docker クイックスタート ターミナルで ....
- 設定
COMPOSE_CONVERT_WINDOWS_PATHS=0
(Toolbox バージョン >= 1.9.0 の場合)
- を実行
docker-machine start default
して VM を再起動します。
cd D:\Projects\MyProject\
docker-compose up
今すぐ動作するはずです。
に redis データベースを作成するようになりましたD:\Projects\MyProject\db\redis\dump.rdb
相対ホスト パスを避ける理由
無効な「\」文字が導入される可能性があるため、Windows ツールボックスの相対ホスト パスは避けました。相対パスを使用するほど良くはありませんdocker-compose.yml
が、少なくとも私の仲間の開発者は、プロジェクト フォルダーが別の場所にある場合でも、docker-compose.yml
ファイルをハッキングする必要なく簡単に実行できます (SCM にとっては悪いことです)。
元の問題
参考までに...これは、以前のバージョンで問題なく機能していたきれいな相対パスを使用したときに発生した元のエラーです。私のボリュームマッピングは、以前は"./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
これは2つの理由で壊れます..
D:
ドライブにアクセスできません
- ボリューム パスに
\
文字
を含めることはできません
docker-compose
それらを追加し、それをあなたのせいにします!!
COMPOSE_CONVERT_WINDOWS_PATHS=0
このナンセンスを止めるために使用します。
docker-compose.yml
VirtualBox を再度アンインストールして共有フォルダーをリセットする必要があるかもしれないので、追加の VM 共有フォルダー マッピングをファイルに記録することをお勧めします。