Note:
-
Questa risposta non è limitata a minikube!
-
Se vuoi creare il registro su Docker di minikube quindi esegui
eval $(minikube docker-env)
prima (per renderedocker
disponibili sul terminale della macchina host).
Altrimenti entra nella macchina virtuale tramiteminikube ssh
, quindi procedi con i seguenti passaggi -
a seconda del tuo sistema operativo, minikube monterà automaticamente il tuo homepath sulla VM.
-
come ha affermato Eli, dovrai aggiungere il registro locale come non sicuro per poter utilizzare http (potrebbe non essere applicabile quando si utilizza localhost ma si applica se si utilizza il nome host locale)
Non utilizzare http in produzione, sforzati di mettere in sicurezza le cose.
Usa un registro locale:
docker run -d -p 5000:5000 --restart=always --name local-registry registry:2
Ora tagga correttamente la tua immagine:
docker tag ubuntu localhost:5000/ubuntu
Si noti che localhost deve essere modificato nel nome DNS della macchina che esegue il contenitore del registro.
Ora invia la tua immagine al registro locale:
docker push localhost:5000/ubuntu
Dovresti essere in grado di ritirarlo:
docker pull localhost:5000/ubuntu
Ora cambia il tuo file yaml per usare il registro locale.
Pensa a montare i volumi nella posizione appropriata, per rendere persistenti le immagini nel registro.
Come descrive il manuale, puoi riutilizzare il demone Docker da Minikube con eval $(minikube docker-env)
.
Quindi, per utilizzare un'immagine senza caricarla, puoi seguire questi passaggi:
- Imposta le variabili d'ambiente con
eval $(minikube docker-env)
- Costruisci l'immagine con il demone Docker di Minikube (ad esempio
docker build -t my-image .
) - Imposta l'immagine nelle specifiche del pod come il build tag (ad es.
my-image
) - Imposta il
imagePullPolicy
aNever
, altrimenti Kubernetes proverà a scaricare l'immagine.
Nota importante: Devi eseguire eval $(minikube docker-env)
su ogni terminale che vuoi usare, poiché imposta solo le variabili d'ambiente per la sessione di shell corrente.
Cosa ha funzionato per me, basato sulla soluzione di @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