将 `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
我对这方面真的很陌生。我是程序员,不是系统管理员。 我正在尝试使用以下命令 运行 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