2016-10-20 5 views
13

ich zu laufen habe folgendes Bild von einem Dockerfile erstellt:Ziehen Sie ein lokales Bild eine Schote in Kubernetes

REPOSITORY TAG IMAGE ID ERSTELLT SIZE

ruby ​​/ lab neueste f1903b1508cb Vor 2 Stunden 729,6 MB

Und ich habe meine folgende YML Datei:

apiVersion: extensions/v1beta1 
kind: Deployment 
metadata: 
    name: ruby-deployment 
spec: 
    replicas: 2 
    template: 
    metadata: 
     labels: 
     app: ruby 
    spec: 
     containers: 
     - name: ruby-app 
     image: ruby/lab 
     imagePullPolicy: IfNotPresent 
     ports: 
     - containerPort: 4567 

Wenn ich erstelle die Stationierung ich in den Schoten, die folgenden Informationen bekommen:

ruby-deployment-3830038651-sa4ii 0/1  ImagePullBackOff 0   7m 
ruby-deployment-3830038651-u1tvc 0/1  ImagePullBackOff 0   7m 

Und:

8m   2m    6  {kubelet minikube}  spec.containers{ruby} Normal   Pulling   pulling image "ruby/lab:latest" 
    8m   2m    6  {kubelet minikube}  spec.containers{ruby} Warning   Failed   Failed to pull image "ruby/lab:latest": Error: image ruby/lab not found 
    8m   2m    6  {kubelet minikube}        Warning   FailedSync  Error syncing pod, skipping: failed to "StartContainer" for "ruby" with ErrImagePull: "Error: image ruby/lab not found" 

Ist wirklich notwendig Registrierung in Docker haben dafür? Ich will nur Test vor Ort machen und meinen Code/repo an einen Freund weitergeben zu Testzwecken

Dank

Antwort

2

Bitte beachten Sie the documentation on images oder die Antwort here.

Jeder Container in einem Pod hat ein eigenes Image. Derzeit wird nur ein Docker-Bild unterstützt. Sie erstellen Ihr Docker-Image und schieben es in eine Registrierung, bevor Sie es in einem Kubernetes-Pod verwenden. Die image-Eigenschaft eines Containers unterstützt dieselbe Syntax wie der Befehl docker, einschließlich privater Registrys und Tags.

Sie können zu einer öffentlichen Docker-Registrierung wechseln oder Ihr eigenes privates Repository verwenden. Es kann eine Möglichkeit geben, minikube pick up locally built images zu machen, aber es wird sicherlich einfacher sein, das Docker-Image in eine Registry zu pushen.

6

AFAIR minikube läuft in einer VM daher wird es nicht die Bilder sehen Sie lokal auf einem Host-Maschine gebaut haben, aber ... wie in https://github.com/kubernetes/minikube/blob/master/README.md#reusing-the-docker-daemon angegeben können Sie eval $(minikube docker-env) verwenden, um tatsächlich Docker Daemon läuft auf minikube zu nutzen, und von nun an bauen Sie Ihr Bild auf dem minikubes docker und somit erwarten, dass es von einem externen Registry

27

ohne Ziehen an den minikubes K8S Motor zur Verfügung stehen können Sie Ihre docker Client verweisen auf die docker Daemon VM von

läuft
eval $(minikube docker-env) 

Sie dann Kann dein Image normal aufbauen und deine Kubernete erstellen s Ressourcen, die normalerweise kubectl verwenden. Stellen Sie sicher, dass Sie in Ihren YAML- oder JSON-Spezifikationen

imagePullPolicy: IfNotPresent 

haben.

Zusätzlich gibt es ein Flag, um unsichere Registrys an die minikube VM zu übergeben. Dies muss jedoch beim ersten Erstellen des Computers angegeben werden.

minikube start --insecure-registry 

Sie auch diese wollen kann lesen, wenn eine private Registrierung http://kubernetes.io/docs/user-guide/images/

+2

@CPB verwenden, können Sie diese als Antwort markieren, wenn es Ihr Problem gelöst bitte? –

Verwandte Themen