问题描述
我正在关注Bret Fisher的Docker课程,并且得到了this assignment。我在Windows上运行并使用docker-machine创建了3个虚拟节点。这三个节点全部连接在一起(2个管理器,1个工作器)。我正在尝试运行以下命令:
docker service create --network backend --mount type=volume,source=db-data,target=/var/lib/postgresql/data --name db -e POSTGRES_HOST_AUTH_METHOD=trust postgres:9.4
当我在Powershell中运行时,它工作正常。 当我尝试在GitBash或cmder中运行它时,出现错误:
invalid mount target,must be an absolute path <the path of cli in used>
我试图将目标更改为:
- 不同的路径
-
pwd/ $pwd / $(pwd) / ${pwd}
-
wsl wslpath $(pwd)
p.s。 当我运行相同代码的the stack example时,它确实在GitBash / Cmder和powershell中运行。
解决方法
您尝试引用安装值吗?
docker service create --network backend --mount "type=volume,source=db-data,target=/var/lib/postgresql/data" --name db -e POSTGRES_HOST_AUTH_METHOD=trust postgres:9.4
,
检查您是否在包含空格的目录中工作。
使用挂载和卷 (-v
) 时,无论您尝试使用哪种转义字符,Docker 都无法在 Windows 上使用 Bash 处理这种情况。
我发现解决此问题的唯一方法是将当前目录切换到文件夹中不包含空格的目录。
即使在 $(pwd)
输入中使用 -v
也是一个问题,请参阅 here,还有一个我试图用来解决问题的转义字符列表。