У меня установлен 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