如何使GitLab CI/CD DIND使用不安全的镜像仓库

3

我在GitLab CI/CD配置中有以下内容:

image: docker:19.03.0

services:
  - name: docker:19.03.0-dind
    command: ["--insecure-registry=My_IP:4567"]

variables:
  DOCKER_DRIVER: overlay2
  DOCKER_TLS_CERTDIR: ""

before_script:
  - docker info
  - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN My_IP:4567

我找到的所有内容都声称这应该允许我在docker容器中使用不安全的注册表,但是这似乎并不正确(再也不对了?)。因为我可以在运行日志的末尾看到:

  Insecure Registries:
  127.0.0.0/8
 Live Restore Enabled: false
$ docker login -u gitlab-ci-token -p $CI_JOB_TOKEN My_IP:4567
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
Error response from daemon: Get https://My_IP:4567/v2/: http: server gave HTTP response to HTTPS client
ERROR: Job failed: exit code 1

有没有人知道这是为什么?很遗憾,我尝试了很多不同版本的测试文件,做了很多微小的更改,但都没有成功。我甚至尝试过更旧的容器版本,但一切都是无法实现的,我从未能够添加不安全的注册表。


嗨,你成功处理了吗?我也遇到了同样的问题。 - Jalal Kiswani
遇到了完全相同的问题。很遗憾下面的答案并没有解决它... - Nate-Wilkins
2个回答

3

针对多个不安全的注册表

services:

  - name: docker:19.03.0-dind

    command:

      [

        '--insecure-registry=172.16.208.77:30551',

        '--insecure-registry=172.16.208.77:30552'
      ]

0

替换

command: ["--insecure-registry=My_IP:4567"]

command: ["--insecure-registry","My_IP:4567"]

还要确保第一行指定了正确的映像以及一些环境变量:

image: docker:19.03-dind

variables:
  DOCKER_DRIVER: overlay2
  DOCKER_TLS_CERTDIR: "/certs"

services:
  - docker:19.03-dind
# .... rest of your config

1
我按照建议进行了编辑,但不安全的注册表仍然只有“127.0.0.0/8”,并且与之前一样出现错误。我尝试添加您的“/certs”以防万一,但没有变化。我相当确定Gitlab有一个文档声称在不使用TLS时应该使用空的CERTDIR变量。 - DaemonSlayer2048

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接