Нарешті з’ясував, як оновити Windows Docker Toolbox до v1.12.5 та продовжувати працювати з моїми томами, додаючи спільну папку в Oracle VM VirtualBox
менеджер та відключаючи перетворення шляхів. Якщо у вас Windows 10+, найкраще використовувати новіший Docker для Windows.
1-й покращений біль:
- Спочатку видаліть VirtualBox.
- Так, це може зламати речі в інших інструментах, таких як Android Studio. Спасибі Докер :(
- Встановіть нову версію Docker Toolbox.
Приклад бази даних Redis:
redis:
image: redis:alpine
container_name: redis
ports:
- "6379"
volumes:
- "/var/db/redis:/data:rw"
У терміналі швидкого запуску Docker ....
- запустити
docker-machine stop default
- переконайтеся, що VM отримано халтуру
В Oracle VM VirtualBox Manager ...
- Додано спільну папку у
default
ВМ через або командний рядок
D:\Projects\MyProject\db
=> /var/db
У docker-compose.yml
...
- Назначений обсяг редису як:
"/var/db/redis:/data:rw"
У терміналі швидкого запуску Docker ....
- Встановити
COMPOSE_CONVERT_WINDOWS_PATHS=0
(для версії Toolbox> = 1.9.0)
- запустити,
docker-machine start default
щоб перезапустити віртуальну машину.
cd D:\Projects\MyProject\
docker-compose up
повинен працювати зараз.
Тепер створює базу даних redis у D:\Projects\MyProject\db\redis\dump.rdb
Чому уникати відносних шляхів хосту?
Я уникав відносних шляхів хосту для Панелі інструментів Windows, оскільки вони можуть вводити недійсні символи '\'. Це не так приємно, як використання шляхів щодо, docker-compose.yml
але, принаймні, мої колеги-розробники можуть це легко зробити, навіть якщо їх папка проекту знаходиться в іншому місці без необхідності злому docker-compose.yml
файлу (погано для SCM).
Оригінальний випуск
FYI ... Ось оригінальна помилка, яку я отримав, коли використовував хороші чисті відносні шляхи, які раніше прекрасно працювали для старих версій. Моє відображення обсягу раніше було справедливим"./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
Це ламається з двох причин ..
- Він не може отримати доступ до
D:
диска
- Шляхи гучності не можуть містити
\
символи
docker-compose
додає їх, а потім звинувачує вас у цьому !!
- Використовуйте,
COMPOSE_CONVERT_WINDOWS_PATHS=0
щоб зупинити цю нісенітницю.
Я рекомендую задокументувати додаткове відображення спільних папок віртуальної машини у вашому docker-compose.yml
файлі, оскільки вам, можливо, доведеться ще раз видалити VirtualBox і скинути спільну папку, і в будь-якому випадку ваші співробітники розробників будуть вам до вподоби.