docker - 如何在启动时启动 Docker 守护程序(Windows 服务)而无需登录?

标签 docker windows-server octopus-deploy docker-for-windows

我们在 Windows Server 2016 Datacenter 机器上安装了 Docker for Windows。

我们使用这个盒子作为我们的 docker 容器的构建代理。

当我们尝试通过守护程序连接到此框以构建容器时,我们收到一条错误消息,指示守护程序未运行(在帖子结束时)。

但是,如果我使用我的 AD 帐户登录到此框,守护程序将启动、运行,然后我可以连接并执行我需要做的一切。

有没有办法让守护程序在启动时启动而不需要用户登录?该服务似乎只有在用户登录时才会运行。

错误信息:

连接时出错:发布 http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.37/build?buildargs=%7B%7D&cachefrom=%5B%5D&cgroupparent=&cpuperiod=0&cpuquota=0&cpusetcpus=&cpusetmems =&cpushares=0&dockerfile=[NameRemovedForPrivacy]&labels=%7B%7D&memory=0&memswap=0&networkmode=default&rm=1&session=[keyRemovedForPrivacy]&shmsize=0&t=[serverNameRemovedForPrivacy]&target=&ulimits=null: 打开//./pipe/docker_engine: 系统找不到指定的文件。在 Windows 上的默认守护程序配置中,必须运行提升的 docker 客户端才能连接。此错误还可能表明 docker 守护程序未运行。

我尝试过的:

  • 经过验证的 Docker 已在 Windows 服务中列出并配置为 自动启动。
  • 在 Windows 任务计划程序中创建条目以执行 docker executablecom.service.docker 在启动时提升 特权。

最佳答案

windows server 的最佳解决方案是使用 Task Scheduler 创建任务,在系统启动时运行“Docker Desktop”应用程序。

要搜索“任务计划程序”,请单击“创建任务...”。

在新选项卡上指定任务名称并选择“无论用户是否登录都运行”单选按钮和“以最高权限运行”复选框。在页面末尾选择适当的窗口类型。

Create Task

现在单击触发器选项卡并添加新触发器。在新的触发器页面上,选择“启动时”,然后单击“确定”。

enter image description here

最后,单击操作选项卡并添加一个运行“Docker windows”快捷方式的新操作,该快捷方式在 windows 上运行 docker daemon。

Create Action

当 docker 启动时,经过 1 分钟,容器启动可能需要一些时间(在我的情况下为 4 分钟)等待几分钟,然后测试您的 docker 是否正在运行。

关于docker - 如何在启动时启动 Docker 守护程序(Windows 服务)而无需登录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51252181/

相关文章:

docker "invalid reference format: repository name must be lowercase"

docker - 部署到 Docker 时外部化 Spring Boot 属性

mercurial - teamcity octopus部署处理具有相同项目名称的多个代码分支(默认和开发)

powershell - Octopus Deploy - 用于在 IIS 上设置 SSL 绑定(bind)的 Deploy.ps1 脚本

docker - Gitlab中的Nginx日志非常大

docker - Docker 镜像会改变吗?如何确保他们不这样做?

windows - 禁用 LDAP 推荐

c# - 通过 windows 服务器上的 windows-service 检查 ubuntu 服务器上的服务状态

powershell - Win Powershell 获取本地事件用户列表

octopus-deploy - Octopus 包 : Additional files copied in a pre-build event