在openshift中部署修改后的Jenkins映像失败

在openshift中部署修改后的Jenkins映像失败,jenkins,docker-registry,openshift-enterprise,Jenkins,Docker Registry,Openshift Enterprise,我在openshift中使用了一个“jenkins-1-centos7”映像来运行jenkins映像上的项目。 它成功地工作了,在多次配置之后,我从这个jenkins容器复制了一个新映像。 现在我想使用此映像作为进一步开发的基础,但在此映像上部署pod失败,错误为“ErrImagePull” 在我的调查中,我发现openshift需要在docker注册表中显示映像才能成功部署POD。 我为docker注册表部署了另一个应用程序,现在当我尝试将更新后的图像推送到这个docker注册表时,它失败了,

我在openshift中使用了一个“jenkins-1-centos7”映像来运行jenkins映像上的项目。 它成功地工作了,在多次配置之后,我从这个jenkins容器复制了一个新映像。 现在我想使用此映像作为进一步开发的基础,但在此映像上部署pod失败,错误为“ErrImagePull”

在我的调查中,我发现openshift需要在docker注册表中显示映像才能成功部署POD。 我为docker注册表部署了另一个应用程序,现在当我尝试将更新后的图像推送到这个docker注册表时,它失败了,并显示消息“需要身份验证”。 我已将管理员权限授予我的用户

docker push <local-ip>:5000/openshift/<new-updated-image>
The push refers to a repository [<local-ip>:5000/openshift/<new-updated-image>] (len: 1)
c014669e27a0: Preparing
unauthorized: authentication required
docker推送:5000/openshift/
推送引用存储库[:5000/openshift/](len:1)
c014669e27a0:准备
未经授权:需要身份验证

如何确保已修改的映像成功部署

这个答案可能需要修改,因为你的问题可能是由很多事情引起的。(我假设您使用的是OpenShift origin?(opensource))。因为我看到了詹金斯的Centos7图像

首先,您需要在默认项目中部署openshift注册表

$ oc project default
$ oadm registry --config=/etc/origin/master/admin.kubeconfig \
    --service-account=registry  
将部署一个注册表吊舱。在注册表上方将创建一个服务(类似于端点,在您的POD上方充当负载平衡器)

此服务的IP位于
172.30
范围内。 您可以在webconsole中检查此IP或执行(假设您仍在默认项目中): $oc获取svc

NAME              CLUSTER-IP      EXTERNAL-IP   PORT(S)                   AGE
docker-registry   172.30.22.11   <none>        5000/TCP                  8d
kubernetes        172.30.32.13      <none>        443/TCP,53/UDP,53/TCP     9d
router            172.30.42.42    <none>        80/TCP,443/TCP,1936/TCP   9d
现在,您可以执行登录并推送图像:

$ docker login -u admin -e any@mail.com \
-p D_OPnWLdgEbiKJzvG1fm9dYdX 172.30.22.11:5000
WARNING: login credentials saved in /root/.docker/config.json
Login Succeeded

$ docker tag myimage:latest 172.30.22.11/my-proj/myimage:latest

$ docker push 172.30.22.11/my-proj/myimage:latest

希望这有帮助。您可以对此答案给出一些反馈,并告知它是否适用于您,或者您面临哪些新问题。

一切正常,只有最后一行出现身份验证错误

docker push 172.30.22.11/my proj/myimage:最新版本


据我所知,你正在塑造你的詹金斯形象。在OpenShift注册表中推送它,然后尝试在OpenShift中使用它?您正在执行什么命令来对OpenShift docker注册表进行身份验证?我正在使用OpenShift Enterprise。。。您给出的步骤与我遵循的步骤完全相同,我部署了一个注册表pod,我能够使用令牌和注册表IP登录,然后我标记了我的图像。我得到的错误是在推送图像时…作为您推送图像的用户?您必须拥有推送图像的权限吗?(例如,您是否具有群集管理角色)我使用我的个人id推送图像:我通过以下命令向用户提供管理员权限:oadm policy add role to user admin khare.ak尽管我通过使用本地docker注册表并使用该本地docker注册表部署我的应用程序解决了此问题,但我认为您需要向用户添加群集角色。您没有使用openshift docker注册表?好的,这可能是问题所在。。。我将尝试这样做,从现在起,我删除了openshift docker注册表,并使用本地docker注册表来部署我的应用程序。我将在一周内回到这一点,并尝试与openshift docker注册表考虑到您的建议。。。在此之前,它是本地docker注册表…您是否尝试按照上面的Lorenzvth7建议将群集角色添加到用户管理员权限中?我将自己添加为管理员:
$ docker login -u admin -e any@mail.com \
-p D_OPnWLdgEbiKJzvG1fm9dYdX 172.30.22.11:5000
WARNING: login credentials saved in /root/.docker/config.json
Login Succeeded

$ docker tag myimage:latest 172.30.22.11/my-proj/myimage:latest

$ docker push 172.30.22.11/my-proj/myimage:latest