Anmerkungen:
-
Diese Antwort ist nicht auf Minikube beschränkt!
-
Wenn Sie die Registrierung in Minikubes Docker erstellen möchten Führen Sie dann
eval $(minikube docker-env)
aus zuerst (umdocker
zu machen verfügbar auf dem Terminal des Host-Rechners).
Ansonsten überminikube ssh
in die virtuelle Maschine einsteigen , und fahren Sie dann mit den folgenden Schritten fort -
Abhängig von Ihrem Betriebssystem wird Minikube Ihren Homepath automatisch auf der VM bereitstellen.
-
Wie Eli sagte, müssen Sie die lokale Registrierung als unsicher hinzufügen, um http verwenden zu können (gilt möglicherweise nicht bei Verwendung von localhost, trifft jedoch zu, wenn Sie den lokalen Hostnamen verwenden).
Verwenden Sie http nicht in der Produktion, bemühen Sie sich, die Dinge zu sichern.
Verwenden Sie eine lokale Registrierung:
docker run -d -p 5000:5000 --restart=always --name local-registry registry:2
Markieren Sie Ihr Bild jetzt richtig:
docker tag ubuntu localhost:5000/ubuntu
Beachten Sie, dass localhost in den DNS-Namen des Computers geändert werden sollte, auf dem der Registrierungscontainer ausgeführt wird.
Pushen Sie nun Ihr Image in die lokale Registry:
docker push localhost:5000/ubuntu
Sie sollten es zurückziehen können:
docker pull localhost:5000/ubuntu
Ändern Sie nun Ihre Yaml-Datei so, dass sie die lokale Registrierung verwendet.
Denken Sie darüber nach, Volumes an einem geeigneten Ort bereitzustellen, um die Images in der Registrierung zu speichern.
Wie im Handbuch beschrieben, können Sie den Docker-Daemon von Minikube mit eval $(minikube docker-env)
wiederverwenden .
Um also ein Bild zu verwenden, ohne es hochzuladen, können Sie diesen Schritten folgen:
- Setzen Sie die Umgebungsvariablen mit
eval $(minikube docker-env)
- Erstellen Sie das Image mit dem Docker-Daemon von Minikube (zB
docker build -t my-image .
) - Setzen Sie das Bild in der Pod-Spezifikation wie das Build-Tag (zB
my-image
) - Stellen Sie den
imagePullPolicy
ein bisNever
, andernfalls versucht Kubernetes, das Image herunterzuladen.
Wichtiger Hinweis: Sie müssen eval $(minikube docker-env)
ausführen auf jedem Terminal, das Sie verwenden möchten, da es nur die Umgebungsvariablen für die aktuelle Shell-Sitzung setzt.
Was bei mir funktioniert hat, basierend auf der Lösung von @svenwltr:
# Start minikube
minikube start
# Set docker env
eval $(minikube docker-env) # unix shells
minikube docker-env | Invoke-Expression # PowerShell
# Build image
docker build -t foo:0.0.1 .
# Run in minikube
kubectl run hello-foo --image=foo:0.0.1 --image-pull-policy=Never
# Check that it's running
kubectl get pods