使用gitlab CI构建docker镜像并推送到自签名的https nexus repo

Syn*_*ity 4 self-signed gitlab docker

我有一个gitlab CI设置,我想构建和推送docker镜像,第一个问题是我的nexus repo不是https.实际的错误消息是这样的:

来自守护程序的错误响应:获取http://some.host:port/v2/:http:server向HTTPS客户端发出HTTP响应

要构建docker镜像我们使用docker:latestimage,我找不到将主机添加为不安全注册表的方法.gitlab-ci.yml

所以自我签署了我的nexus存储库,希望它能解决,但它也没有用,并提供以下错误消息:

来自守护程序的错误响应:获取https://some.host:port/v2/:x509:由未知权限签名的证书

这是我目前的CI设置:

image: docker:latest

services:
  - docker:dind

before_script:
  - docker info
  - docker login -u USER -p PASSWORD some.host:port

stages:
  - build

build-image:
  stage: build
  script:
    - docker build -t some.host:port/image:alpine .
    - docker push some.host:port/image:alpine
  only:
    - master
  when: manual
Run Code Online (Sandbox Code Playgroud)

那么有一个简单的解决方案或现有的docker镜像我可以配置不安全的注册表可能是一些docker magic with command line我真的需要创建一个自己的图像来解决这个问题吗?

Tar*_*ani 7

您可以dind使用不同的命令启动docker .有关详细信息,请参阅以下网址

https://docs.gitlab.com/ce/ci/docker/using_docker_images.html#setting-a-command-for-the-service.所以你需要更新你的.gitlab.ci.yml

image: docker:latest

services:
- name: docker:dind
  command: [ "--insecure-registry=some.host:port" ]

before_script:
  - docker info
  - docker login -u USER -p PASSWORD some.host:port

stages:
  - build

build-image:
  stage: build
  script:
    - docker build -t some.host:port/image:alpine .
    - docker push some.host:port/image:alpine
  only:
    - master
  when: manual
Run Code Online (Sandbox Code Playgroud)

然后你可以使用一个不安全的http注册表