Docker Toolbox (Windows): неверная спецификация тома - PullRequest
0 голосов
/ 24 декабря 2018

Конфигурация

Использование Windows 10, Docker Toolbox ( не собственный Docker, чтобы иметь возможность использовать виртуальные машины).

Фон

Естьскрипт Python (2.7), который должен запускать контейнер Docker.Код выглядит следующим образом:

self.docker.containers.run('container_name',
                           command='bash -c "%s"' % command,
                           volumes={PROJECT_PATH: {'bind': '/shared', 'mode': 'rw'}},
                           working_dir='/shared',
                           remove=True,
                           **kwargs)

Проблема

Попытка запустить скрипт:

* Building the DummyProbe docker image
* Running the DummyProbe container   
500 Server Error: Internal Server Error ("invalid volume specification: 'C:\Users\Foo\..:/shared:rw'")

Мысли

После поиска в Интернете invalid volume specification, кажется, вызвано тем, как Windows и Linux обрабатывают структуру каталогов.Linux использует косую черту /, а Windows - обратную косую черту \.Похожие вопросы:

Однако в моем случае COMPOSE_CONVERT_WINDOWS_PATHS установлен (на true, также попытался установить на 1):

PowerShell

enter image description here

Docker Toolbox

$ docker-machine env
export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://111.111.11.111:1111"
export DOCKER_CERT_PATH="C:\Users\Foo\.docker\machine\machines\default"
export DOCKER_MACHINE_NAME="default"
export COMPOSE_CONVERT_WINDOWS_PATHS="true"
# Run this command to configure your shell:
# eval $("C:\Program Files\Docker Toolbox\docker-machine.exe" env)

Ни одно из предложений в других вопросах не работает.

Обновление

Пытался использовать для замены \ на/ и используйте его в сценарии:

500 Server Error: Internal Server Error ("invalid volume specification: 'C:/Users/***/..:/shared:rw'")

Так что, похоже, это не проблема

1 Ответ

0 голосов
/ 24 декабря 2018

Мне удалось выполнить эту работу, заменив все \\ на / и C: на /c.

Путь нарушен : C:\\Path\\to\\file становится /c/path/to/file

https://docs.python.org/2/library/os.html

Похоже, что модуль os, отвечающий за возврат системных путей, не имеет встроенной функции для преобразования пути Windows в Unix.И Docker Toolbox также не обрабатывает эту беседу (если она вообще должна).

Может быть, есть какой-то другой элегантный способ сделать эту работу.Но сейчас собираюсь просто использовать это.

...