标签: docker-for-windows

Gitlab CI 准备环境:来自守护进程的错误响应:hcssshim::CreateComputeSystem

我创建了一个 Windows 映像,并将其推送到自定义注册表。图像构建没有任何错误。它也可以在任何使用该命令的机器上完美运行docker run

我在 Windows 主机上使用配置为使用 docker-windows 的 gitlab 运行程序。docker run在 shell 中使用该命令时,该映像在 Windows 主机上也运行得非常好。

但是,当 gitlab CI 触发管道时,我收到以下包含错误的日志:

Running with gitlab-runner 14.9.0 (d1f69508)
  on Test windows docker runner daSVobYW
Preparing the "docker-windows" executor 00:01
Using Docker executor with image someaddress:someport/windows_msvc2019_qt-desktop-6.2.3:v1.0.0 ...
Pulling docker image someaddress:someport/windows_msvc2019_qt-desktop-6.2.3:v1.0.0 ...
Using docker image sha256:XXX for someaddress:someport/windows_msvc2019_qt-desktop-6.2.3:v1.0.0 with digest someaddress:someport/windows_msvc2019_qt-desktop-6.2.3@sha256:XXX ...
Preparing environment
ERROR: Job failed (system failure): prepare environment: Error response from daemon: hcsshim::CreateComputeSystem 2f20866e4110118edc3274945d93d6138a16a67f9865d325e8b81c572ce08b96: Access denied. (exec.go:73:0s). …
Run Code Online (Sandbox Code Playgroud)

gitlab docker gitlab-ci gitlab-ci-runner docker-for-windows

5
推荐指数
1
解决办法
2106
查看次数

Docker 无法删除所有镜像

我正在使用Windows 版 Docker 桌面。当我尝试通过此命令删除所有图像时:

docker rmi $(docker images -q)
Run Code Online (Sandbox Code Playgroud)

我在命令提示符中收到此错误消息:

未知的简写标志:-q 中的“q”)

我在 Window 10 Pro 上运行Docker

docker docker-for-windows docker-desktop

4
推荐指数
1
解决办法
3444
查看次数

通过 windows docker 文件设置 git

我写的Dockerfile是基于windowsnanoserver。我需要添加到这个图像 git。为了实现它,我做了以下事情:

RUN Invoke-WebRequest 'https://github.com/git-for-windows/git/releases/download/v2.12.2.windows.2/Git-2.12.2.2-64-bit.exe'
RUN Invoke-Expression "c:\Git-2.12.2.2-64-bit.exe"
Run Code Online (Sandbox Code Playgroud)

但是当我通过 docker build 执行此行时,我收到以下错误消息:

Invoke-Expression :术语“c:\Git-2.12.2.2-64-bit.exe”未被识别为 cmdlet、函数、脚本文件或可运行程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确,然后重试。

我意识到此错误消息表明由于 Windows docker 映像的控制台性质,我将无法执行 GUI 安装程序。不幸的是 git 没有控制台安装程序。Chocolateywindowsservercore图像下工作正常,但在windowsnanoserver下不起作用。为了为windowsnanoserver安装 git,我有想法重复Dockerfile来自巧克力 git 安装程序的命令,这对我来说很好,但我仍然想知道有没有更简单的方法可以在windowsnanoserver上安装 git ?

docker dockerfile docker-for-windows docker-desktop

4
推荐指数
3
解决办法
8693
查看次数

主机重启后未挂载Docker卷

我通过启动各种Docker容器,docker-compose up -d并且它们都启用了restart always选项。

当我重新启动主机(Windows 10 Pro)时,容器将重新启动,但似乎未安装卷。我知道这是因为我将配置文件保留在已安装的卷上,并且当我转到网页时,服务会显示初始设置屏幕,例如plex会启动新服务器。当我运行时docker-compose stop,然后docker-compose up -d它们已装入卷并正在使用正确的配置文件。容器在重新启动时如何启动与之间有什么区别docker-compose up

docker docker-compose docker-for-windows docker-desktop

4
推荐指数
1
解决办法
1769
查看次数

如何将PowerShell脚本指定为Docker容器入口点?

我需要将[Windows] Docker容器作为可执行文件运行,运行相当复杂的PowerShell脚本(调用Java和.NET应用程序)并退出。Docker文档建议ENTRYPOINT用于此目的。因此,我继续创建了一个包含以下内容的Dockerfile:

FROM microsoft/dotnet-framework
COPY run.ps1 /
ENTRYPOINT [ "powershell.exe", "C:\\run.ps1" ]
Run Code Online (Sandbox Code Playgroud)

的内容run.ps1(此问题的超级简化):

gci
write-host "looks like everything is good!"
Run Code Online (Sandbox Code Playgroud)

然后,我运行了以下命令:

# Build the Docker image
docker build --rm -t testdockerps .

# Create/run container using above image
docker run -it testdockerps
Run Code Online (Sandbox Code Playgroud)

容器成功运行,显示的内容,C:\后跟消息- looks like everything is good!

根据我的观察,我有几个问题:

  1. 基于Windows的Docker容器的默认外壳是什么?有什么方法可以将其设置为PowerShell,因此我不必将“ powershell”指定为ENTRYPOINTJSON数组的第一个元素?我应该SHELL在Dockerfile中使用命令吗?
  2. 创建和运行容器大约需要3-4秒,这在一定程度上是可以理解的,但是在PS1脚本完成后,容器退出并返回命令提示符大约需要花费10秒的时间。延迟的原因可能是什么?

powershell docker docker-for-windows docker-entrypoint

4
推荐指数
1
解决办法
6138
查看次数

对 Windows 的 Windows 服务 Docker 进行 Docker 化

我有一个现有的 Windows 服务,我想将其移动到 Windows 中的 docker 容器。我对此很陌生。如果有人可以帮助我如何创建 docker 映像以将 Windows 服务移至 docker,那将会很有帮助。

windows-services docker-for-windows

4
推荐指数
1
解决办法
3398
查看次数

'docker -v'绑定挂载在Windows 10上不再起作用

当我第一次在Windows 10上开始使用Docker时,一切都很棒.我可以绑定挂载一个本地目录并以交互方式乱搞这样的事情:

docker run -it -v ${PWD}:/app -w /app ubuntu:trusty /bin/bash
Run Code Online (Sandbox Code Playgroud)

哪个应该将内容从本地机器上的当前目录复制到容器中,然后启动我进入交互式Bash shell,我可以在其中看到它们ls,执行它们等.

但是现在我在一个月左右的时间回到它,当我有一个我想用Docker解决的真实项目时,我不能重复我之前的成功.

现在,当我运行上面的交互式命令时,该/app目录是在容器中创建的,但是没有来自我本地磁盘的文件.我尝试了其他一些我一直在使用的非交互式Docker命令,但它们也失败了,因为它们似乎也看不到文件.

PS C:\Users\xxx\app> docker run -v ${PWD}:/app -w /app ubuntu:trusty ./startup.sh
   C:\Program Files\Docker\Docker\Resources\bin\docker.exe: Error response from daemon: OCI runtime create failed: container_linux.go:348: starting container process caused "exec: \"./startup.sh\": stat ./startup.sh: no such file or directory": unknown.
Run Code Online (Sandbox Code Playgroud)

docker docker-for-windows

4
推荐指数
1
解决办法
2590
查看次数

无法建立连接,因为目标机器主动拒绝它。“Windows 版 Docker 上的 Kubernetes”

我已经为 Windows 18.05.0-ce (Windows 10 Hyper-V) 安装了 Edge 版本的 Docker,然后启用了 Kubernetes。
在我的另一台机器上自动创建了 kubectl 上下文,但在这台新机器上却没有。

> kubectl config get-contexts
CURRENT   NAME      CLUSTER   AUTHINFO   NAMESPACE
> kubectl version
Client Version: version.Info{Major:"1", Minor:"10", GitVersion:"v1.10.3", GitCommit:"2bba0127d85d5a46ab4b778548be28623b32d0b0", GitTreeState:"clean", BuildDate:"2018-05-21T09:17:39Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"windows/amd64"}
Unable to connect to the server: dial tcp [::1]:8080: connectex: No connection could be made because the target machine actively refused it.
Run Code Online (Sandbox Code Playgroud)

我可以知道如何让 Docker for Windows 创建上下文吗?
或者我可以手动设置吗?
我有点不确定如何获取kubectl config set-context命令所需的信息。

我可以在 Kubernetes 之外运行 docker 容器。
我看到 Kubernetes 容器在 Docker 中运行。 …

docker kubernetes docker-for-windows

4
推荐指数
1
解决办法
1万
查看次数

Docker 与共享 Windows 文件夹

我正在尝试从 Docker for Windows 上的 docker 容器中访问远程共享文件夹。

在容器内部运行时dir \\target\share会产生“找不到网络路径。”。可以从容器内部 ping 目标,并且可以从主机系统访问共享。

使用的图像是microsoft/dotnet-framework:4.7.2-sdk,我正在运行它,仅带有-it测试选项。

我错过了什么才能让它发挥作用?

smb docker docker-for-windows

4
推荐指数
1
解决办法
1385
查看次数

在 docker 中切换到 Linux Container 时出错

我已经安装了 docker。当它在 Windows 容器中运行时,它工作正常。但是,如果我切换到 Linux 容器,则会出现以下错误。

操作系统:Windows 10 Docker 桌面:2.2.0.3

错误:

Docker.Core.Backend.BackendDestroyException:
Unable to stop Hyper-V VM: Service 'Hyper-V Host Compute Service (vmcompute)' cannot be started due to the following error: Cannot start service vmcompute on computer '.'.
at Enable-MobyLinuxRequiredService, <No file>: line 103
at <ScriptBlock>, <No file>: line 804
   at Docker.Core.Pipe.NamedPipeClient.<TrySendAsync>d__5.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at Docker.Core.Pipe.NamedPipeClient.Send(String action, Object[] parameters)
   at Docker.Actions.<>c__DisplayClass39_0.<SwitchDaemon>b__0()
   at Docker.ApiServices.TaskQueuing.TaskQueue.<>c__DisplayClass18_0.<.ctor>b__1()
Run Code Online (Sandbox Code Playgroud)

docker windows-10 linux-containers docker-for-windows

4
推荐指数
1
解决办法
3632
查看次数