docker gitlab ci无法构建windows容器

n1bvdmb6  于 6个月前  发布在  Docker
关注(0)|答案(4)|浏览(69)

我正在尝试使用https://gitlab.com构建windows容器,但我不知道是否支持。
我用一个非常简单的Dockerfile做了一个测试:

FROM mcr.microsoft.com/windows/servercore:ltsc2019
CMD echo "Hello World from Windows"

字符串
使用.gitlab-ci.yml

image: docker
services:
- docker:dind

variables:
  DOCKER_HOST: tcp://docker:2375
  DOCKER_DRIVER: overlay2

before_script:
  - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY

windows:
  stage: build
  script:
  - docker build -t ${CI_REGISTRY}/${CI_PROJECT_PATH}:${CI_COMMIT_REF_SLUG} . 
  - docker push ${CI_REGISTRY}/${CI_PROJECT_PATH}:${CI_COMMIT_REF_SLUG}


失败原因:
映像操作系统“windows”不能在此平台上使用
错误:作业失败:退出代码% 1
寻找gitlab-runner的文档,它似乎支持https://docs.gitlab.com/runner/executors/#selecting-the-executor。
有没有一种方法可以从在线服务构建一个windows容器?

2hh7jdfx

2hh7jdfx1#

January 2020开始,可以使用Windows Shared Runners(beta)在线服务构建Windows容器。
今天,我们很高兴地宣布,由GitLab托管的Windows Shared Runners已推出beta版。随着我们开始向社区推出这一重要服务,我们邀请您在GitLab.com上帮助塑造Windows生态系统的CI/CD工具方向
例如,使用以下.gitlab-ci.yml

windows:
  stage: build
  tags:
  - shared-windows
  - windows
  - windows-1809
  script:
  - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
  - docker build -t ${CI_REGISTRY}/${CI_PROJECT_PATH}:${CI_COMMIT_REF_SLUG} . 
  - docker push ${CI_REGISTRY}/${CI_PROJECT_PATH}:${CI_COMMIT_REF_SLUG}

字符串
简单的Dockerfile

FROM mcr.microsoft.com/windows/servercore:ltsc2019
CMD echo "Hello World from Windows"


流水线执行result x1c 0d1x

ix0qys7i

ix0qys7i2#

GitLab 1.11(2019年5月)应该支持这一点

GitLab Runner的Windows容器执行程序

在GitLab 11.11中,我们很高兴为GitLab Runner添加了一个新的执行器,用于在Windows上使用Docker容器。
x1c 0d1x的数据
以前,使用shell执行器来编排Docker命令是Windows的主要方法,但通过此更新,您现在可以直接在Windows上使用Docker容器,就像在Linux主机上一样。
这为我们的Microsoft平台用户打开了更高级的管道编排和管理的大门。
此更新包括在整个GitLab CI/CD中改进对PowerShell的支持,以及各种版本的Windows容器的新帮助器映像。
请注意,您自己的Windows runner可以与GitLab.com一起使用,但目前无法作为共享公共队列的一部分提供。
这来自issue 535:请参阅文档“使用Windows容器”。
It has limitations,但这是一个很好的第一步。

js81xvg6

js81xvg63#

据我所知,GitLab.com提供的runner都是基于Linux的。你需要为你自己的runner提供一个基于Windows的Docker引擎来构建Windows Docker镜像。

4nkexdtk

4nkexdtk4#

@mpromonet解决方案不再工作,而无需添加额外的行来启动docker服务,因为现在不像以前那样默认启动。
使用- Start-Service -Name "docker"添加before_script部分
更新示例:

windows:
  stage: build
  tags:
    - shared-windows
    - windows
    - windows-1809
  before_script:
    - Start-Service -Name "docker"
  script:
    - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
    - docker build -t ${CI_REGISTRY}/${CI_PROJECT_PATH}:${CI_COMMIT_REF_SLUG} . 
    - docker push ${CI_REGISTRY}/${CI_PROJECT_PATH}:${CI_COMMIT_REF_SLUG}

字符串
来源:https://forum.gitlab.com/t/docker-daemon-not-running-on-windows-shared-runner/83245

相关问题