2017-10-02 4 views
0

GitLab 러너와 DIND와 함께 GitLab을 사용하고 있습니다.도커 DIND가 개인 레지스트리에 액세스 할 수 없습니다.

구성 세부 : 제쳐두고

--------------------------------------- 

docker run --privileged --name gitlab-dind -d --restart=always docker:17.07-dind 

--------------------------------------- 

cat gitlab_runner.sh 
docker run -d --name gitlab-runner --restart always \ 
    -v /mnt/data/gitlab/gitlab-runner:/etc/gitlab-runner \ 
    --link gitlab-dind:docker \ 
    gitlab/gitlab-runner:v9.5.0 

--------------------------------------- 

cat /mnt/data/gitlab/gitlab-runner/config.toml 
concurrent = 1 
check_interval = 0 

[[runners]] 
    name = "RunnerA" 
    url = "https://gitlab.dev.abc.net" 
    token = "d8ed43a69ebed74ccab2493857d8cb" 
    executor = "docker" 
    [runners.docker] 
    tls_verify = false 
    image = "docker:17.07" 
    privileged = false 
    disable_cache = false 
    volumes = ["/cache"] 
    host = "tcp://gitlab-dind:2375" 
    shm_size = 0 
    [runners.cache] 

--------------------------------------- 

cat ~/wksp/test-proj/.gitlab-ci.yml 
image: docker.artifactory.abc.net/docker:17.07 

variables: 
    DOCKER_HOST: tcp://docker:2375 

# This before_script block was added later but it seems this block 
# isn't executed before the DIND tries fetching image from Artifactory 
before_script: 
    - docker login -u svc-art-user -p some-pwd docker.artifactory.abc.net 
    - docker info 

services: 
- docker.artifactory.abc.net/docker:17.07-dind 

build: 
    stage: build 
    script: 
    - docker build -t my-docker-node-image . 

--------------------------------------- 

, 상기 구성에서, .gitlab-ci.yml 필요 DOCKER_HOST 구성 또는 config.toml 충분할 단지 엔트리 (host = "tcp://gitlab-dind:2375)는 무엇입니까? 주자가 실행될 때

지금, 나는 다음과 같은 오류가 발생합니다 :

Runner log error: 
Running with gitlab-ci-multi-runner 9.5.0 (413da38) 
    on RunnerA (d8ed43a6) 
Using Docker executor with image docker.artifactory.abc.net/docker:17.07 ... 
Starting service docker.artifactory.abc.net/docker:17.07-dind ... 
Pulling docker image docker.artifactory.abc.net/docker:17.07-dind ... 
ERROR: Preparation failed: Error response from daemon: Get https://docker.artifactory.abc.net/v2/: x509: certificate signed by unknown authority 

내가 잘못 될 수 있지만,이 서비스 계정 (svc-art-user가) 전에 를 로그인 할 수 없기 때문에이 오류가 보인다 DIND 이미지가 당겨집니다.

답변

0

이미지를 가져와야하기 때문에 Gitlab Runner에 인증 세부 정보를 제공해야합니다.

당신은

{ 
    "auths": { 
     "docker.artifactory.abc.net": { 
      "auth": "bXlfdXNlcm5hbWU6bXlfcGFzc3dvcmQ=" 
     } 
    } 
} 

다음과 같이 인증 세부 DOCKER_AUTH_CONFIG 비밀 변수를 만들 필요가 로컬 고정 표시기에 로그인하고 ~/.docker/config.json

문서는이

에 좋은 내용을 제공 확인하여 얻을 수있는이

https://docs.gitlab.com/ce/ci/docker/using_docker_images.html#define-an-image-from-a-private-docker-registry

https://docs.gitlab.com/runner/configuration/advanced-configuration.html#using-a-private-container-registry

+0

답장을 보내 주셔서 감사합니다. 미안하지만 나는 이미 이것을 시도했다고 언급하는 것을 잊어 버렸다. config.json의 내용을 복사했습니다. (호스트에서'docker login -u svc-art-user -p some-pwd docker.artifactory.abc.net' 명령을 실행 한 후 생성되었습니다.) _as is_는' 비밀 변수 '섹션에 있습니다. 그래도 오류는 계속 발생합니다. 컨테이너를 다시 시작할 필요가 없기를 바랍니다. 모든 (GitLab, Runner & DIND) 컨테이너가 하나의 호스트에서 실행 중입니다. – Technext

+0

Gitlab 러너가 시작시 또는 런타임에이 변수를 선택하는지 확신 할 수 없기 때문에 Gitlab 러너를 다시 시작하십시오. –

+0

러너와 도커 - dind를 다시 시작한 후에도 문제가 지속됩니다. : – Technext