我有一个 gitlab CI 设置,我想在其中构建和推送 docker 映像,第一个问题是我的 nexus 存储库不是 https。实际的错误消息是这样的:
来自守护程序的错误响应:获取 http://some.host:port/v2/: http: 服务器向 HTTPS 客户端提供了 HTTP 响应
为了构建 docker 映像,我们使用docker:latest
映像,我找不到将我们的主机添加为不安全注册表的方法.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
那么是否有一个简单的解决方案或现有的 docker 映像,我可以在其中配置不安全的注册表可能是命令行的一些 docker 魔术,我真的需要创建一个自己的映像来解决这个问题?
您可以使用不同的命令启动 docker dind
。有关更多详细信息,请参阅下面的网址
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
然后,您可以使用不安全的http注册表
对我有用,语法略有修改,命令需要数组。
services:
- name: docker:dind
command: ["--insecure-registry=some.host:port"]