如何将卷从 Windows 主机挂载到 Windows 来宾系统?
我在使用 Docker 的 Windows Server 2016 TP4 上。
遵循https://docs.docker.com/engine/userguide/containers/dockervolumes/上的文档
如果您在 Mac 或 Windows 上使用 Docker Machine,则您的 Docker 守护程序只能有限地访问您的 OS X 或 Windows 文件系统。Docker Machine 会尝试自动共享您的 /Users (OS X) 或 C:\Users (Windows) 目录。因此,您可以使用在 OS X 上挂载文件或目录。
在 Windows 上,使用以下命令挂载目录:
docker run -v /c/Users/[path]:/[容器路径] ...`
我试过:
docker run --name iisdemo2 -it -p 80:80 -v /c/Users/mlin/meinedaten:/meinedaten iis cmd
Run Code Online (Sandbox Code Playgroud)
这给了我一个错误:
docker : docker: Error response from daemon: Invalid bind mount spec "/c/Users/mlin/meinedaten:/meinedaten": volumeinvalid: Invalid volume specification:
'/c/Users/mlin/meinedaten:/meinedaten'. …
Run Code Online (Sandbox Code Playgroud) 我尝试NetworkController
使用 Powershell 在 Windows 2016 Server TP4 上的 docker 容器上安装 Windows 功能“ ”。运行“ Add-WindowsFeature NetworkController
”后,我收到消息:
“您必须重新启动此服务器才能完成安装过程。”
当我现在使用 Get-WindowsFeature 再次检查(还没有做任何其他事情)时,它的安装状态为“InstallPending”。
现在我不确定“重新启动此服务器”是什么意思 100%,但我想这意味着我应该重新启动主机,因为没有其他东西可以重新启动(并且容器本身只是一个容器,而不是虚拟机)使用 Hyper-V 方法)。
所以我尝试以下方法:
方法 (1)
我使用 停止 docker 容器docker stop iisdemo
,然后重新启动主机(我的 Windows 2016 服务器),然后使用docker start iisdemo
.
但是当我检查 NetworkController 时,它仍然没有安装。
方法 (2)
在第二次尝试中,我添加了该功能,然后重新启动 docker 容器而不重新启动 Windows 2016 服务器,只需运行
dock restart iisdemo
.
现在发生了一些奇怪的事情,当我尝试通过 来检查特征时Get-WindowsFeature *network*
,收集数据的过程停止在 57% 并且容器本身存在。
当我再次附加到 docker 镜像时:
> docker start iisdemo
> docker attach iisdemo
> …
Run Code Online (Sandbox Code Playgroud) 我在Windows 主机 (Windows Server 2016 TP4)上运行Windows 容器。
容器应在内部端口 80 上运行IIS 网络服务器,我还想将端口 80 绑定到主机,以便我可以通过主机 IP/URL 访问它。
我按照 Microsoft 的说明进行操作
我通过 Powershell 和 Docker 尝试了这两种方法,在这两种情况下,绑定到主机的端口都不起作用。
========================== Powershell 方法 ======================== ===
将容器主机部署到现有系统(Windows Server 2016 TP4)
PS C:> wget -uri https://aka.ms/tp4/Install-ContainerHost -OutFile C:\Install-ContainerHost.ps1
PS C:> powershell.exe -NoProfile C:\Install-ContainerHost.ps1
Querying status of Windows feature: Containers...
Feature Containers is already enabled.
Waiting for Hyper-V Management...
Networking is already …
Run Code Online (Sandbox Code Playgroud) networking port-forwarding container docker windows-server-2016