簡體   English   中英

docker部署中的gitlab docker無法訪問私有注冊表

[英]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_REGISTRYCI_REGISTRY_IMAGECI_REGISTRY_USERCI_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM