我是否误用了 Docker 的 --name 参数?

我是否误用了 Docker 的 --name 参数?

这有效: docker run -it mcr.microsoft.com/windows:20H2 --isolation=hyperv

我获得了容器的 CLI,一切都很好。

这不起作用: docker run -it mcr.microsoft.com/windows:20H2 --isolation=hyperv --name=workstation_1

当我添加--name=workstation_1参数时,根据其docker run --help是有效参数:

在此处输入图片描述

我收到此错误:

docker: Error response from daemon: container 1118d316b0700307943bec10392b39266b79db08350311618fb5bfc247e2fa8d encountered an error during hcsshim::System::CreateProcess: failure in a Windows system call: The system cannot find the file specified. (0x2)
[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!00007FF6EBB1A40B: (caller: 00007FF6EBAD5C8B) Exception(1) tid(398) 80070002 The system cannot find the file specified.
    CallContext:[\Bridge_ProcessMessage\VmHostedContainer_ExecuteProcess]
 Provider: 00000000-0000-0000-0000-000000000000].

我是否误用了 --name 参数?我还应该如何命名我的容器?我正在编写脚本,因此需要一种无需人工干预的(实用)方法来执行此操作。

我可以列出容器,假设列表中的第一个是新的,然后使用docker rename,但出于显而易见的原因,对于自动构建管道使用该方法似乎是不可取的。

作为替代方案,我尝试了:

docker create mcr.microsoft.com/windows:20H2 --name=workstation_1

docker create mcr.microsoft.com/windows:20H2 --name="workstation_1"

由于docker create --help表明这也是一个有效的论点:

在此处输入图片描述

这并没有失败,但它也没有命名容器。

答案1

请注意帮助信息的第一部分:

$ docker run --help

Usage:  docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

图像名称后的所有内容都会覆盖该命令的默认命令和参数。因此

docker run -it mcr.microsoft.com/windows:20H2 --isolation=hyperv --name=workstation_1

将运行启动一个带有-it选项的容器,在基于镜像的容器中mcr.microsoft.com/windows:20H2运行命令--isolation=hyperv --name=workstation_1。要修复此问题,请将这些选项放在镜像名称之前:

docker run -it --isolation=hyperv --name=workstation_1 mcr.microsoft.com/windows:20H2

相关内容