gitlab-ci - gitalb CI:x509:访问私有 docker 注册表时由未知权威签署的证书
问题描述
无法从 gitlab-ci 登录到我的私人 docker 注册表。
设想:
- gitlab CE综合安装,注册表在gitlab里面。
- 带有 docker executor 的 gitlab-runner 在 docker swarm 集群中作为容器运行
- gitlab-runner 在 /etc/gitlab-runner/certs/ 中有一个 ca.crt
- ca.crt 以正确的顺序包含服务器、中间证书和根证书。
- 它不是自签名证书,而是通配符证书 (*.domain.com)
- 在 gitlab-runner 容器内,我可以毫无错误地
curl https://registry.domain.com
运行
我试过的:
- 将注册表添加为不安全(daemon.json 和 .gitlab-ci.yaml)
- 在运行器中将证书添加为 registry.domain.com.crt
.gitlab-ci.yml
build_image:
image: docker:19.03.8
services:
- name: docker:19.03.12-dind
command: ["--insecure-registry=registry.domain.com:443"]
alias: docker
stage: build
...
script:
- docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN registry.domain.com
obs:我已经看到这个没有成功。
解决方案
我仍然不知道是什么导致了这个问题,但解决方案是在 gitlab-runner 中安装 docker socket
gitlab-runner register <other_options> --docker-volumes /var/run/docker.sock:/var/run/docker.sock
推荐阅读
- docker - 将容器图像标签与摘要一起使用
- hibernate - NoClassDefFoundError JPA Hibernate-search-orm
- sql - SQL:更改表中的列时选择最大值(值)
- python - comparing multiple values assigned to one key in two dictionaries
- docker - Javascript child_process.spawn docker错误
- python - 查找另一个列表中每个子列表的超集索引
- bash - `docker-machine ls` 命令根据我使用的外壳显示不同的输出?
- javascript - 将 webcam.js 数据发送到 python 服务器
- json - 如何将一列StringType(json字符串)转换为一个StructType数组
- java - 动态绑定关注点