首页 > 解决方案 > GITLAB-CI 管道无法登录到不安全的注册表

问题描述

我的管道无法登录到我没有 ssl 的私有注册表,因此当管道执行 docker login 时,它会尝试连接 https。

添加了命令选项,如stackoverflow上的其他答案所示

services:   
   - name: docker:dind     
   command: ["--insecure-registry=$REGISTRY_URL"]

在 /etc/docker/daemon.json 上添加了这个东西

{
  "insecure-registries" : ["myregistry:5000"]
}

stages:
    - build
    - test
    - build_container
    - deploy


variables:
    REGISTRY_URL: myregistry:5000
    CONTAINER_TAG: latest
    REGISTRY_PROJECT: hello-world
    TEST_TAG: teste


services:
  - name: docker:dind
    command: ["--insecure-registry=$REGISTRY_URL"]

before_script:
   - uname -a

build:
  stage: build
  image: gcc
  script:
    - make -f Makefile
  artifacts:
    paths:
        - i386/hello-world/
    expire_in: 1 week


deploy:                 <---- PROBLEM STARTS HERE
   stage: deploy
   image: docker:latest
   environment:
    name: deploy
   script:
    - echo "$CI_REGISTRY_PASSWORD" | docker login -u "$CI_REGISTRY_USER" --password-stdin $REGISTRY_URL
    - docker pull $REGISTRY_URL/$REGISTRY_PROJECT:$CONTAINER_TAG
    - docker tag $REGISTRY_URL/$REGISTRY_PROJECT:$TEST_TAG
    - docker push REGISTRY_URL/$REGISTRY_PROJECT:$TEST_TAG

我收到此错误消息:

time="2019-05-07T14:08:47Z" level=info msg="Error logging in to v2 endpoint, trying next endpoint: Get https://myregistry:5000/v2/: dial tcp: lookup myregistry on 193.XX.XX.XX:53: no such host"

如果我从以下位置删除 $REGISTRY_URL:

    - echo "$CI_REGISTRY_PASSWORD" | docker login -u "$CI_REGISTRY_USER" --password-stdin $REGISTRY_URL

然后我可以登录,但是我不能做一个拉,因为码头图像没有到达注册表?我认为

标签: dockergitlab-ci

解决方案


关于命令不安全注册表,您必须使用空字符串定义变量 DOCKER_TLS_CERTDIR: DOCKER_TLS_CERTDIR: ''


推荐阅读