在OpenShift上从私有注册表创建映像图像流

时间:2016-02-26 11:06:08

标签: docker docker-registry openshift-origin

我已经建立了一个OpenShift Origin 1.1.3集群。现在我从私人注册表中提取图像。此注册表是“不安全的”。它具有自签名证书和凭据以进行身份​​验证。我能够执行docker login并在我的节点上手动提取图像。

问题是只有该节点才能访问该图像。因此,当我缩放我的pod(基于该图像)时,所有副本都将在该特定节点上运行。其他节点无法提取或使用图像。

所以我想为我的图片创建一个图像流:

oc import-image --insecure=true ec2-xxx:5000/image

But:       message: you may not have access to the Docker image "ec2-xxx:5000/image"
      reason: Unauthorized

我读过有关创建秘密的内容。我创造了它:

oc secrets new-dockercfg mysecret --docker-server=ec2-xxx:5000 --docker-username=*** --docker-password=*** --docker-email=any@mail.com

如何将此秘密添加到我的图片流中?这是正确的方法吗?

2 个答案:

答案 0 :(得分:2)

@cloudnoob他的回答对我很有帮助。 但主要问题是我以错误的方式创造了我的秘密。 我在使用loglevel 5启动OpenShift master后看到了这一点。

Unable to find a secret to match https://ec2-xxx:5000/v2/test/image/manifests/83 

所以我不得不用https创建我的秘密(它被称为不安全的自签名证书,但它使用https):

oc secrets new-dockercfg mysecret --docker-server=https://ec2-xxx:5000 --docker-username=*** --docker-password=*** --docker-email=any@mail.com

在这一步之后,我不得不执行cloudnoob的步骤。将秘密添加到服务帐户。之后,导入是成功的。

答案 1 :(得分:0)

Openshift Origin Doc 要使用密钥为pod提取图像,您必须将秘密添加到您的服务帐户。此示例中的服务帐户名称应与pod将使用的服务帐户的名称相匹配; default是默认服务帐户:

$ oc secrets添加serviceaccount / default secrets / --for = pull

要使用秘密来推送和拉出构建图像,秘密必须可以安装在窗格内。您可以通过运行:

来完成此操作

$ oc secrets添加serviceaccount / builder secrets /