我正在开发基于Docker的项目。项目代码托管在私有Gitlab安装git.example.com
中。有了它,部署了Docker private registry shipped with Gitlab,registry.example.com
。
该项目有一个CI设置,最终构建Docker镜像并推送到注册表,这部分按预期工作。作为Gitlab+Docker registry does not yet support multiple images related to the same Git repo,我使用标记解决方法将图像指定为:
registry.example.com/group/my.project:web
registry.example.com/group/my.project:app
我创建了一个用户并将其附加到项目中,通过本地登录并尝试提取上面的图像,这可以按预期工作。
我已将ImageStream
块添加为:
apiVersion: v1
kind: ImageStream
metadata:
name: web
spec:
tags:
-
from:
kind: DockerImage
name: registry.example.com/group/my.project:web
name: latest
这会在图像部分添加图像,但它无法拉动它Openshift还无法访问Docker Registry。我按照here描述添加了一个新的Docker机密,现在我可以在Openshift中看到图像元数据,一切看起来都符合预期。
但是,如果我添加部署配置,就像这样:
apiVersion: v1
kind: DeploymentConfig
metadata:
creationTimestamp: null
labels:
service: web
name: web
spec:
replicas: 1
selector:
service: web
strategy:
resources: { }
template:
metadata:
creationTimestamp: null
labels:
service: web
spec:
containers:
-
name: web
ports:
-
containerPort: 80
resources: { }
restartPolicy: Always
test: false
triggers:
-
type: ConfigChange
-
type: ImageChange
imageChangeParams:
automatic: true
containerNames:
- web
from:
kind: ImageStreamTag
name: 'web:latest'
status: { }
我一直收到错误:
Failed to pull image "registry.example.com/group/my.project@sha256:3333022641e571d7e4dcae2953d35be8cdf9416b13967b99537c4e8f150f74e4": manifest unknown: manifest unknown
在已创建的窗格的“事件”选项卡中。这基本上杀死了我将预建图像部署到Openshift的计划。
我知道Docker 1.9 - > 1.10不兼容,但这是Openshift 1.4.1,用Docker 1.13推送图像所以它不应该是一个问题。
我如何开始调试这个,有没有办法访问任何类型的日志,这可以解释发生了什么?为什么ImageStream能够找到它需要的一切(并访问我的注册表),而不是DeploymentConfig?
答案 0 :(得分:0)
回答我自己的问题:似乎Docker的发行版(注册表守护程序)有a bug which manifests itself in quite a weird way。
基本上,问题是:
SHA:1234
(当然是示例)SHA:ABCD
,你可以通过推送然后立即拉动来重现这个,摘要应该是相同的两次,如在链接中解释我已经将我的Gitlab实例移动到另一台机器(它在Nginx后面)并且它没有问题。