개인 도커 레지스트리 (v2)에서 빌드 용 도커 이미지를 가져 오는 Docker 기반 Gitlab CI 러너를 만들고 싶습니다. Gitlab Runner가 로컬 레지스트리에서 이미지를 가져올 수 없도록 만들었습니다. /v1
API에서 가져 오기를 시도합니다. 다음과 같은 오류 메시지가 나타납니다.Gitlab CI가 개인 도커 레지스트리에서 이미지를 가져올 수 없습니다.
ERROR: Build failed: Error while pulling image: Get http://registry:5000/v1/repositories/maven/images : dial tcp: lookup registry on 127.0.1.1:53: no such host
다음은 최소한의 예이며, docker-compose 및 웹 브라우저를 사용합니다.
나는 다음과 같은 docker-compose.yml
파일이 있습니다
version: "2"
services:
gitlab:
image: gitlab/gitlab-ce
ports:
- "22:22"
- "8080:80"
links:
- registry:registry
gitlab_runner:
image: gitlab/gitlab-runner
volumes:
- /var/run/docker.sock:/var/run/docker.sock
links:
- registry:registry
- gitlab:gitlab
registry:
image: registry:2
첫 Gitlab 로그인 후를, 나는 Gitlab 인스턴스로 주자를 등록 :이 후
[email protected]:/# gitlab-runner register
Running in system-mode.
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/ci):
http://192.168.61.237:8080/ci
Please enter the gitlab-ci token for this runner:
tE_1RKnwkfj2HfHCcrZW
Please enter the gitlab-ci description for this runner:
[130d08732613]: docker
Please enter the gitlab-ci tags for this runner (comma separated):
Registering runner... succeeded runner=tE_1RKnw
Please enter the executor: docker-ssh+machine, docker, docker-ssh, parallels, shell, ssh, virtualbox, docker+machine:
docker
Please enter the default Docker image (eg. ruby:2.1):
maven:latest
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!
, 내가있는 Gitlab 러너를 참조 내 Gitlab 예 :
이 후 나는 새로 만든 도커 저장소에 간단한 받는다는 이미지를 밀어 :
[email protected]:~/$ docker tag maven:3-jdk-7 172.19.0.2:5000/maven:3-jdk7
[email protected]:~/$ docker push 172.19.0.2:5000/maven:3-jdk7
The push refers to a repository [172.19.0.2:5000/maven]
79ab7e0adb89: Pushed
f831784a6a81: Pushed
b5fc1e09eaa7: Pushed
446c0d4b63e5: Pushed
338cb8e0e9ed: Pushed
d1c800db26c7: Pushed
42755cf4ee95: Pushed
3-jdk7: digest: sha256:135e7324ccfc7a360c7641ae20719b068f257647231d037960ae5c4ead0c3771 size: 1794
난에서 테스트 프로젝트를 생성 이후
(나는 docker inspect
명령의 출력에서 172.19.0.2
IP 주소를 가지고) Gitlab 및 간단한 .gitlab-ci.yml
파일 추가 :
image: registry:5000/maven:3-jdk-7
stages:
- build
- test
- analyze
maven_build:
stage: build
script:
- "mvn -version"
을 그리고 빌드 후 Gitlab는 게시물의 시작 부분에서 볼 수있는 오류를 제공합니다. 같은 여전히
[email protected]:~/$ docker exec -it comptest_gitlab_runner_1 bash
[email protected]:/# curl http://registry:5000/v2/maven/tags/list
{"name":"maven","tags":["3-jdk7"]}
[email protected]:/# exit
exit
[email protected]:~/$
그러나 오류 : 나는 실행 gitlab 주자 용기에 입력하면
, 나는 주어진 URL에서 레지스트리에 액세스 할 수 있습니다
당신을 수행 gitlab-runner가 개인 레지스트리의 v2 API를 사용하도록하는 방법을 알고 있습니까?
러너 내부에서 이미지를 당겨 보았습니까? 어쩌면 "외부"IP가 있을까요? 호스트에서 이미지를 가져 오는 것은 어떻습니까? – Martin
@mgansler gitlab_runner 이미지 ('docker exec -it comptest_gitlab_runner_1 bash')에 입력하면 도커 명령이 없습니다. 그러나 레지스트리가 나타납니다, 왜냐하면 나는 컬의 레지스트리의 HTTP API를 사용할 수 있기 때문입니다. –