我想要创建一个基于Docker的Gitlab运行程序,它从一个私有码头注册中心(v2)中提取构建的对接图像。我无法让Gitlab从本地注册表中提取映像,它试图从/v1 API中获取一些信息。我收到以下错误消息:
错误:生成失败:当拖动映像时出错:获取http://registry:5000/v1/repositories/maven/images:拨号tcp:查找注册表上的127.0.1.1:53:没有这样的主机
下面是一个很小的例子,使用docker-组合和web浏览器。
我有以下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实例中:
root@130d08732613:/# 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运行者:

之后,我将一个简单的maven映像推到我新创建的Docker存储库中:
vilmosnagy@vnagy-dell:~/$ docker tag maven:3-jdk-7 172.19.0.2:5000/maven:3-jdk7
vilmosnagy@vnagy-dell:~/$ 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(我从一个172.19.0.2命令的输出中获得了docker inspect IP地址)
之后,我在Gitlab中创建了一个测试项目,并添加了一个简单的.gitlab-ci.yml文件:
image: registry:5000/maven:3-jdk-7
stages:
- build
- test
- analyze
maven_build:
stage: build
script:
- "mvn -version"在构建之后,Gitlab给出了在文章开头看到的错误。
如果我输入正在运行的gitlab-runner容器,我可以访问给定URL下的注册表:
vilmosnagy@vnagy-dell:~/$ docker exec -it comptest_gitlab_runner_1 bash
root@c0c5cebcc06f:/# curl http://registry:5000/v2/maven/tags/list
{"name":"maven","tags":["3-jdk7"]}
root@c0c5cebcc06f:/# exit
exit
vilmosnagy@vnagy-dell:~/$但是错误仍然是一样的:

您知道如何强制gitlab使用私有注册表的v2 api吗?
发布于 2016-12-21 09:07:37
当前的Gitlab和Gitlab运行程序支持这一点,请参见:https://docs.gitlab.com/runner/configuration/advanced-configuration.html#use-a-private-container-registry
在旧的Gitlab上,我通过将auth密钥复制到~/.docker/config.json来解决这个问题
{
"auths": {
"my.docker.registry.url": {
"auth": "dmlsbW9zLm5hZ3k6VGZWNTM2WmhC"
}
}
}我已经从我的计算机登录到这个容器,并将这个auth密钥复制到Gitlab Runner的码头容器中。
发布于 2016-07-25 10:57:30
你在Gitlab上运行什么版本的码头?另外,对于v2注册表,您必须使用命令行开关显式地允许不安全的注册表,或者使用证书保护您的注册表。
否则,如果v1注册表获得安全异常,Docker将返回到它。
https://stackoverflow.com/questions/38511864
复制相似问题