卷路径或在Windows容器中安装

时间:2018-06-22 09:49:00

标签: docker dockerfile

说明
我在Windows容器中收到错误“来自守护程序的错误响应:类型为“卷”的无效安装配置:无效安装路径”

重现此问题的步骤:
  1. DockerFile

FROM microsoft/aspnetcore-build AS base
WORKDIR /app

ENTRYPOINT [ "dotnet", "Test.dll" ]
  1. 运行命令docker build -t docker-vol .
  2. 运行命令docker run -it -p 8001:80 -v D:\Projects\Docker\publish:c:/app --name docker-vol-test docker-vol(有效)
  3. 运行命令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中使用相对路径而不是绝对路径?

2 个答案:

答案 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 注意路径必须存在,否则命令失败。