[英]Gitlab docker in docker deployment unable to access private registry
我在Docker主机上设置了一个私有gitlab注册表。 在同一台主机上,我试图构建测试映像并将其推送到上述注册表。 由于某种原因,这是行不通的。 这是我的gitlab ci配置:
阶段:-build_testing-分析-测试-build_deployment
variables:
MYSQL_RANDOM_ROOT_PASSWORD: 'true'
MYSQL_USER: 'dev'
MYSQL_PASSWORD: 'dev'
MYSQL_DATABASE: 'debitor_management_test'
# image: 10.11.12.41/laravel:v1
# services:
# - name: mariadb:10.1
# alias: mysql
image: docker:stable
services:
- name: docker:dind
command: ["--insecure-registry=10.11.12.41:443"]
build_testing:
stage: build_testing
script:
- docker build -t 10.11.12.41/debitor_management_testing .
- ping -c 5 10.11.12.41
- docker push 10.11.12.41/debitor_management_testing
ping命令有效,但docker push
失败,
$ docker push 10.11.12.41/debitor_management_testing
The push refers to repository [10.11.12.41/debitor_management_testing]
Get https://10.11.12.41/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
ERROR: Job failed: exit code 1
我该如何工作?
该错误表明CI运行程序无法与10.11.12.41
通信。
每个GitLab存储库都有一个关联的Container Registry,用于存储Docker映像。 您最好使用它而不是运行用于存储图像的自定义注册表。 GitLab CI为CI作业提供了预定义的变量 ,例如CI_REGISTRY
, CI_REGISTRY_IMAGE
, CI_REGISTRY_USER
和CI_REGISTRY_PASSWORD
以帮助您访问与存储库关联的注册表。
如果使用内置注册表,则可以像下面这样编写build_testing
作业。
build_testing:
stage: build_testing
script:
- docker login --username $CI_REGISTRY_USER --password $CI_REGISTRY_PASSWORD $CI_REGISTRY
- docker image build -tag $CI_REGISTRY_IMAGE .
- docker image push $CI_REGISTRY_IMAGE
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.