说明
我在Windows容器中收到错误“来自守护程序的错误响应:类型为“卷”的无效安装配置:无效安装路径”
重现此问题的步骤:
1. DockerFile
FROM microsoft/aspnetcore-build AS base
WORKDIR /app
ENTRYPOINT [ "dotnet", "Test.dll" ]
docker build -t docker-vol .
docker run -it -p 8001:80 -v D:\Projects\Docker\publish:c:/app --name docker-vol-test docker-vol
(有效)docker run -it -p 8001:80 --mount "source=D:\Projects\Docker\publish,target=c:/app" --name docker-vol-test docker-vol
失败,Error response from daemon: invalid mount config for type "volume": invalid volume name
我想知道如何与--mount一起使用,以及是否可以在-v中使用相对路径而不是绝对路径?
答案 0 :(得分:1)
您正在使用bind mount,但是由于您没有指定type
,因此它默认为volume
。在这种情况下,source
必须是卷的名称,对于匿名卷则必须省略。
因为您提供了路径,所以出现了此错误。如果您在命令中添加一个type
键,它将可以正常工作:
docker run -it -p 8001:80 --mount 'type=bind, source="D:\Projects\Docker\publish", target="c:/app"' --name docker-vol-test docker-vol
要回答第二点,绑定安装需要绝对路径。在Linux-land中使用相对路径的通常方法是在路径前面加上$PWD
。在Windows中,相当于SPWD
的是%cd%
,因此,如果您是从D:\Projects\Docker
运行的,则上面的值可能是:
docker run -it -p 8001:80 --mount 'type=bind, source="%cwd%\publish", target="c:/app"' --name docker-vol-test docker-vol
请注意,我没有在Windows下使用Docker的经验,但是我相信以上方法应该可以工作。
答案 1 :(得分:0)
以上是正确的,但如果你想使用 -v
代替语法是:docker run -v C:\SomePath:C:\app\somePath image
注意路径必须存在,否则命令失败。