将 `docker 运行` 与音量一起使用时出错

Error when using `docker run` with volume

我对这方面真的很陌生。我是程序员,不是系统管理员。 我正在尝试使用以下命令 运行 windows docker 主机上的 windows 容器:

docker run --name DevSQLCont -p 1433:1433 -e accept_eula=y -e sa_password=Super5ecret! tobiasfenster/mssql-server-dev-unsupported:2019-cu14 -v sqlvolume:c:\sqlvolume

导致此错误:(对于德语错误文本很抱歉,- 它表示找不到“设置文件”)

docker : docker: Error response from daemon: container cf7b3b74e3c1546d4a594b96063f5b571a56df4db5b14036f3d5d08ab90e27d1 encountered an error during hcsshim::System::CreateProcess: failure in a Windows system 
call: Das System kann die angegebene Datei nicht finden. (0x2)
In Zeile:2 Zeichen:1
+ docker run --name DevSQLCont -p 1433:1433 -e accept_eula=y -e sa_pass ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (docker: Error r...t finden. (0x2):String) [], RemoteException
    + FullyQualifiedErrorId : NativeCommandError
 
[Event Detail:  Provider: 00000000-0000-0000-0000-000000000000]
[Event Detail:  Provider: 00000000-0000-0000-0000-000000000000]
[Event Detail: onecore\vm\compute\management\orchestration\vmhostedcontainer\processmanagement.cpp(173)\vmcomputeagent.exe!00007FF63689A40B: (caller: 00007FF636855C8B) Exception(2) tid(394) 80070002 The system 
cannot find the file specified.
    CallContext:[\Bridge_ProcessMessage\VmHostedContainer_ExecuteProcess] 
 Provider: 00000000-0000-0000-0000-000000000000].

如果我在没有 -v sqlvolume:\sqlvolume 参数的情况下执行相同操作,则容器 运行 没问题。 由于我在互联网上找到的不同示例,我对参数进行了一些修改,所有示例都以相同的结果结束。 - 有任何想法吗?这不应该取决于图像中的其他设置,对吗?

我的目标是将数据库文件保留在主机上,并将容器用作我可以按需使用的 SQL 服务。我要使用 windows 容器,因为我需要 运行 docker 其他容器的 windows 模式我经常 运行 但我不想建立双重服务体系。

p.s.: 这是卷已正确创建的证明:

C:\WINDOWS\system32> docker volume inspect sqlvolume
[
    {
        "CreatedAt": "2022-01-17T17:17:07+01:00",
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "C:\ProgramData\Docker\volumes\sqlvolume\_data",
        "Name": "sqlvolume",
        "Options": {},
        "Scope": "local"
    }
]

你可以用下面的参数替换-v --mount source=<VOLUME NAME>,target=<PATH ON CONTAINER>

给出您喜欢的任何卷名(区分大小写)该卷位于 \\wsl$\docker-desktop-data\version-pack-data\community\docker\volumes

注意:由于您是 运行 一个 windows 容器,因此卷位置可能与上面列出的相同,也可能不同

我自己找到了答案:问题不在于参数,我试图设置音量。问题是我在图像定义之后设置它们。

这个有效:

docker run --name DevSQLCont -p 1433:1433 -e accept_eula=y -e sa_password=Super5ecret! -v sqlvolume:c:\sqlvolume tobiasfenster/mssql-server-dev-unsupported:2019-cu14

这不是

docker run --name DevSQLCont -p 1433:1433 -e accept_eula=y -e sa_password=Super5ecret! tobiasfenster/mssql-server-dev-unsupported:2019-cu14 -v sqlvolume:c:\sqlvolume