Как разделить каталог хоста Windows с контейнером DinD? - PullRequest
0 голосов
/ 30 июня 2019

У меня установлен Docker на компьютере с Windows 10.Я запускаю Jenkins в Docker, и у меня есть Dockerized трубопровод.Я хотел бы поделиться ~/.m2/repository кэшем Maven с моего компьютера Windows с контейнерами DinD, порожденными докеризованным конвейером.

Проблема в том, что я не могу заставить работать Windows (то же самое будет работать в OSX, примеры ниже)).

Итак, я пробую:

docker run -vc: /Users/user/.m2/repository: / repo -v / var / run / docker.sock: /var/run/docker.sock --rm -it docker sh

Первый контейнер создается, я могу проверить, что ls /repo не пусто.Затем я пытаюсь выполнить точно такую ​​же команду для запуска DinD

docker run -vc: /Users/user/.m2/repository: / repo -v /var/run/docker.sock:/var / run / docker.sock --rm -it docker sh

Сбой команды с:

docker: Ответ об ошибке от демона: недопустимый режим: /repo.

Похоже, что докер linux не любит двоеточие : после имени диска Windows.Хорошо, я могу попробовать заменить c:/ на /c/ и снова попробовать запустить два docker containerws с помощью одной команды:

docker run -v /c/Users/user/.m2/repository: / repo -v /var/run/docker.sock:/var/run/docker.sock --rm -it docker sh # excute два раза

Теперь запускается, но только первый контейнервидит не пустой /repo.Как решить это на Windows?Оба контейнера видят сокет докера /var/run/docker.sock (docker ps работает в обоих), но кэш Maven пуст /repo в секунду (контейнер DinD).

PS: я проверял, что подобный трюк был бы на OSXработать как следует:

docker run -v /Users/user/.m2/repository:/repo -v /var/run/docker.sock:/var/run/docker.sock --rm -it docker sh

...