2016-07-25 20 views
2

Ich habe ein "jenkins-1-centos7" -Bild verwendet, um in meinem openshift zu implementieren, um Projekte auf meinem jenkins-Bild auszuführen. Es funktionierte erfolgreich und nach vielen Konfigurationen, duplizierte ich ein neues Bild aus diesem Jenkins-Container. Jetzt möchte ich dieses Bild als Basis für die weitere Entwicklung verwenden, aber die Bereitstellung eines Pods auf diesem Bild schlägt mit dem Fehler "ErrImagePull" fehl.Die Verwendung eines modifizierten Jenkins-Images in OpenShift schlägt fehl

Bei meinen Untersuchungen habe ich festgestellt, dass OpenShift das Image in der Docker-Registrierung benötigt, um Pods erfolgreich zu implementieren. Ich habe eine andere App für Docker-Registrierungen bereitgestellt, jetzt, wenn ich versuche, mein aktuelles Image in diese Docker-Registrierung zu übertragen, schlägt es mit der Nachricht "Authentifizierung erforderlich". Ich habe meinem Benutzer Administratorrechte erteilt.

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 

Wie kann ich sicherstellen, dass das geänderte Image erfolgreich bereitgestellt wird?

+0

So soweit ich Sie bauen Ihr jenkins Bild zu verstehen. Es in die OpenShift-Registry schieben und dann versuchen, es in OpenShift zu verwenden? Mit welchem ​​Befehl authentifizieren Sie sich in Ihrer OpenShift-Docker-Registrierung? – lvthillo

Antwort

1

Wahrscheinlich wird diese Antwort bearbeitet werden müssen, da Ihr Problem durch viele Dinge verursacht werden kann. (Ich nehme an, Sie verwenden OpenShift Herkunft? (Opensource)). Weil ich das Centos7-Bild für Jenkins sehe.

Zunächst einmal müssen Sie die OpenShift-Registry im Standardprojekt bereitstellen.

$ oc project default 
$ oadm registry --config=/etc/origin/master/admin.kubeconfig \ 
    --service-account=registry 

Ein Registrierungs-Pod wird bereitgestellt. Über der Registrierung wird ein Dienst erstellt (eine Art Endpunkt, der als Loadbalancer über Ihren Pods fungiert).

Dieser Dienst hat eine IP, die innerhalb der 172.30-Bereich liegt. Sie können diese IP im webconsole überprüfen oder ausführen (Sie im Standard-Projekt sind immer noch unter der Annahme): oc $ erhalten 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 

So werden Sie den Dienst IP Ihrer Docker-Registrierung verwenden, müssen authentifizieren. Sie brauchen auch ein Token:

$ oc whoami -t 
D_OPnWLdgEbiKJzvG1fm9dYdX.. 

Jetzt sind in der Lage Ihnen die Login ausführen und drücken Sie das Bild:

$ docker login -u admin -e [email protected] \ 
-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 

Hoffnung, das hilft. Sie können ein Feedback zu dieser Antwort geben und erfahren, ob es für Sie funktioniert oder mit welchen neuen Problemen Sie konfrontiert sind.

+0

Ich benutze Openshift Enterprise ... und die Schritte, die Sie angegeben haben, sind die gleichen Schritte, denen ich gefolgt bin, habe ich einen Registrierungs-Pod bereitgestellt, ich konnte mich mit dem Token und der Registrierung IP anmelden, und dann habe ich mein Bild markiert . Der Fehler, den ich bekomme, ist während des Druckens des Bildes ... –

+0

als welcher Benutzer schiebst du das Bild? Hast du Berechtigungen, um das Bild zu pushen?(Zum Beispiel haben Sie die Cluster-Admin-Rolle) – lvthillo

+0

Ich habe meine persönliche ID verwendet, um das Bild zu schieben: Ich stellte Administratorrechte für den Benutzer durch den folgenden Befehl: ** oadm Richtlinie add-Role-to-Benutzer admin khare.ak ** Obwohl ich das Problem gelöst habe, indem ich eine lokale Docker-Registrierung verwendet habe und meine Anwendung mithilfe der lokalen Docker-Registrierung –

0

Alles ist in Ordnung nur letzte Zeile Authentifizierungsfehler bekommen

Docker Push 172.30.22.11/my-proj/myimage:latest

+0

Haben Sie versucht, Hinzufügen ** Cluster-Rolle-zu-Benutzer ** Admin-Rechte für Ihren Benutzer wie Lorenzvth7 oben vorgeschlagen? –

+0

Ich habe mich selbst als Admin hinzugefügt: –