我创建了一个 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) 我正在使用Windows 版 Docker 桌面。当我尝试通过此命令删除所有图像时:
docker rmi $(docker images -q)
Run Code Online (Sandbox Code Playgroud)
我在命令提示符中收到此错误消息:
未知的简写标志:-q 中的“q”)
我在 Window 10 Pro 上运行Docker
我写的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 没有控制台安装程序。Chocolatey在windowsservercore图像下工作正常,但在windowsnanoserver下不起作用。为了为windowsnanoserver安装 git,我有想法重复Dockerfile来自巧克力 git 安装程序的命令,这对我来说很好,但我仍然想知道有没有更简单的方法可以在windowsnanoserver上安装 git ?
我通过启动各种Docker容器,docker-compose up -d并且它们都启用了restart always选项。
当我重新启动主机(Windows 10 Pro)时,容器将重新启动,但似乎未安装卷。我知道这是因为我将配置文件保留在已安装的卷上,并且当我转到网页时,服务会显示初始设置屏幕,例如plex会启动新服务器。当我运行时docker-compose stop,然后docker-compose up -d它们已装入卷并正在使用正确的配置文件。容器在重新启动时如何启动与之间有什么区别docker-compose up?
我需要将[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!。
根据我的观察,我有几个问题:
ENTRYPOINTJSON数组的第一个元素?我应该SHELL在Dockerfile中使用命令吗?我有一个现有的 Windows 服务,我想将其移动到 Windows 中的 docker 容器。我对此很陌生。如果有人可以帮助我如何创建 docker 映像以将 Windows 服务移至 docker,那将会很有帮助。
当我第一次在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) 我已经为 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 for Windows 上的 docker 容器中访问远程共享文件夹。
在容器内部运行时dir \\target\share会产生“找不到网络路径。”。可以从容器内部 ping 目标,并且可以从主机系统访问共享。
使用的图像是microsoft/dotnet-framework:4.7.2-sdk,我正在运行它,仅带有-it测试选项。
我错过了什么才能让它发挥作用?
我已经安装了 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 ×9
dockerfile ×1
gitlab ×1
gitlab-ci ×1
kubernetes ×1
powershell ×1
smb ×1
windows-10 ×1