Docker run -v : 无法挂载绑定卷:”无效的卷规范“。

5

我对 Docker 还比较陌生。我正在使用 Windows 10 Enterprise,并且尝试将一个运行在 Windows 上的已有应用程序容器化(因此它是一个Windows 容器)。我不知道这是否重要,但是该容器相当大(8 GB)。

我需要与容器共享一个配置文件(位于主机上),应用程序在启动时会使用该配置文件。我想一个 绑定卷 是最简单的。

问题: 在运行映像时,我获得了以下错误:docker: Error response from daemon: invalid volume specification: '<source path>:<target path>'

使用以下命令构建了容器:
docker build -t my_image .

以下是 Dockerfile 内容:

FROM mcr.microsoft.com/dotnet/framework/runtime:4.8
WORKDIR /app
COPY . .
ENTRYPOINT .\application.exe ..\Resources

这是我尝试过的方法
docker run -it -v c:/Users/my_user:/app my_image

  • 我尝试了C:/,C:\,C:\\,/c/,//c/,\c\,\\c\等各种组合。
  • 我尝试了多个/app的组合,包括/app,//app,\app,\app,C:\app等等。
  • 我还尝试了在结尾添加 :rw 和不添加 :rw。
  • 我尝试了 ```--mount``` 语法,但始终会输出:docker: Error response from daemon: invalid mount config for type "bind": invalid mount path: '/app'(我也尝试了 /app 的多种变体)

  • 我已经尝试了每一个可能的组合(除了正确的那个)。 请帮忙!


    如果提供的答案有助于解决您的问题,请接受答案并将问题标记为已解决。 - Raja
    2个回答

    7

    由于您正在使用 Windows 容器,因此文件路径将发生更改。请尝试以下命令,来自文档Windows 容器中的持久存储

    docker run -it -v c:\Users\my_user:c:\app my_image
    

    0
    如果您正在使用 PowerShell 并尝试使用 docker run 命令运行 Docker,则可以尝试此方法。在 Windows PowerShell(VS Code PowerShell)中,这对我有效。
    docker run -v ${pwd}\src:/app/src -d -p 3000:3000 --name react-app-c2  react-app-image
    

    这里,react-app-c2是容器名称,react-app-image是镜像名称 -v用于卷,${pwd}用于当前工作目录 /app/src用于容器目录。


    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接