我正在尝试使用 GitLab 管道构建 Windows Docker 映像。 GitLab Runner 配置为使用 shell (PowerShell) 执行器,并托管在已安装 Docker 的 AWS Windows EC2 实例上。
在管道中,我添加了诸如
docker --version, docker info, docker login, and docker build
之类的命令。虽然这些命令直接在 EC2 实例上运行时可以成功执行,但在通过 GitLab Runner 运行它们时,我遇到了“协议不可用”错误。
为了确保 Docker 守护进程在 EC2 实例上的功能,我在运行程序作业中执行了命令
Get-Service Docker
,这确认了 Docker 服务正在运行,并显示:
Status Name DisplayName
------ ---- -----------
Running Docker Docker Engine
尽管如此,我在通过 GitLab Runner 执行 Docker 命令时仍然面临协议错误。任何有关解决此问题的见解将不胜感激。
我在这里发现了问题。这是因为运行程序作业配置中的 DOCKER_HOST 配置不正确。对于 Windows,应该设置为
DOCKER_HOST: tcp://docker:2375/
,或者根本不需要配置它,在这种情况下,runner 服务将通过默认主机访问 Docker。