Docker Toolbox(Windows):无效的卷规格

时间:2018-12-24 10:43:28

标签: docker docker-toolbox

配置

使用Windows 10,Docker工具箱(本机Docker,以便能够使用VM)。

背景

有一个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 :(得分:0)

我能够通过将所有type User struct { Id int `form:"-"` Name interface{} `form:"username"` Age int `form:"age,text,age:"` Sex string Intro string `form:",textarea"` } <form action="" method="post"> {{.Form | renderform}} </form> 替换为\\并将/替换为C:来完成这项工作。

断开路径: /c 变成 C:\\Path\\to\\file

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

似乎负责返回系统路径的/c/path/to/file模块没有将Windows转换为Unix路径的内置函数。而且Docker Toolbox也无法处理这种对话(即使可以的话)。

也许还有其他一些优雅的方法可以完成这项工作。但是现在只使用这个。